joined 함수를 정리해봅니다.
시퀸스가 들어있는 배열일 때, 하나의 시퀸스로 이어주는 함수입니다.
String도 Charactor의 시퀸스라고 볼 수 있고, 정수 배열 해당이 됩니다.
String일 때와 그 이외의 배열일 때가 약간 다릅니다.
String 배열의 joined
String의 배열의 joined 함수의 정의는 아래와 같습니다. 매개변수로 seperator가 있고 생략했을 때는 ""가 기본으로 적용됩니다.

String의 배열에 joined를 적용하면 아래처럼 이어집니다.
let someAlmonds = ["HoneyButter", "Wasabi", "Corn", "Buldak", "MintChoco"]
let joinedAlmonds = someAlmonds.joined()
print(joinedAlmonds) // HoneyButterWasabiCornBuldakMintChoco
joined(separator:)를 적용하면 String 사이에 들어갈 String을 넣어줄 수 있습니다.
let joinedAlmonds = someAlmonds.joined(separator: " and ")
print(joinedAlmonds) // HoneyButter and Wasabi and Corn and Buldak and MintChoco
그 외 시퀸스의 배열에서의 joined
String이 아닐 때는 joined()와 joined(seperator:)가 조금 다릅니다.
먼저 그냥 joined()를 보면, FlattenSequence를 반환한다고 되어 있습니다.

아래는 예제입니다.
joined만 한 경우 FlattenSequence가 반환되어, 배열로 사용하고 싶을 땐 Array에 해당값으로 초기화하여 사용해야 합니다.
let someNumbers = [[0, 1, 2, 3, 4], [5, 6 ,7, 8, 9]]
let joinedNumbers = someNumbers.joined()
let joinedNumberArray = Array(joinedNumbers)
print(joinedNumbers) // FlattenSequence<Array<Array<Int>>>(_base: [[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]])
print(joinedNumberArray) // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
다음은 joined(seperator:)입니다.
seperator의 시퀸스값과 joined할 시퀸스가 같은 타입으로 넣도록 제네릭으로 선언되어 있고,
where절로 Seperator가 Sequence 프로토콜을 따르고, Sequence의 Element가 joined하는 시퀸스의 Element의 Element가 같은 타입이어야 한다고 제한되어져 있습니다.
JoinedSequence가 반환된다는 점도 다릅니다.

아래는 joined(seperator:)의 예제입니다.
JoinedSequence가 반환되며, 배열로 사용하고 싶을 땐 마찬가지로 Array에 해당값으로 초기화하여 사용합니다.
let someNumbers = [[0, 1, 2, 3, 4], [5, 6 ,7, 8, 9]]
let joinedNumbers = someNumbers.joined(separator: [-1])
let joinedNumberArray = Array(joinedNumbers)
print(joinedNumbers) // JoinedSequence<Array<Array<Int>>>(_base: [[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]], _separator: ContiguousArray([-1]))
print(joinedNumberArray) // [0, 1, 2, 3, 4, -1, 5, 6, 7, 8, 9]
joined 함수를 정리해봅니다.
시퀸스가 들어있는 배열일 때, 하나의 시퀸스로 이어주는 함수입니다.
String도 Charactor의 시퀸스라고 볼 수 있고, 정수 배열 해당이 됩니다.
String일 때와 그 이외의 배열일 때가 약간 다릅니다.
String 배열의 joined
String의 배열의 joined 함수의 정의는 아래와 같습니다. 매개변수로 seperator가 있고 생략했을 때는 ""가 기본으로 적용됩니다.

String의 배열에 joined를 적용하면 아래처럼 이어집니다.
let someAlmonds = ["HoneyButter", "Wasabi", "Corn", "Buldak", "MintChoco"]
let joinedAlmonds = someAlmonds.joined()
print(joinedAlmonds) // HoneyButterWasabiCornBuldakMintChoco
joined(separator:)를 적용하면 String 사이에 들어갈 String을 넣어줄 수 있습니다.
let joinedAlmonds = someAlmonds.joined(separator: " and ")
print(joinedAlmonds) // HoneyButter and Wasabi and Corn and Buldak and MintChoco
그 외 시퀸스의 배열에서의 joined
String이 아닐 때는 joined()와 joined(seperator:)가 조금 다릅니다.
먼저 그냥 joined()를 보면, FlattenSequence를 반환한다고 되어 있습니다.

아래는 예제입니다.
joined만 한 경우 FlattenSequence가 반환되어, 배열로 사용하고 싶을 땐 Array에 해당값으로 초기화하여 사용해야 합니다.
let someNumbers = [[0, 1, 2, 3, 4], [5, 6 ,7, 8, 9]]
let joinedNumbers = someNumbers.joined()
let joinedNumberArray = Array(joinedNumbers)
print(joinedNumbers) // FlattenSequence<Array<Array<Int>>>(_base: [[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]])
print(joinedNumberArray) // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
다음은 joined(seperator:)입니다.
seperator의 시퀸스값과 joined할 시퀸스가 같은 타입으로 넣도록 제네릭으로 선언되어 있고,
where절로 Seperator가 Sequence 프로토콜을 따르고, Sequence의 Element가 joined하는 시퀸스의 Element의 Element가 같은 타입이어야 한다고 제한되어져 있습니다.
JoinedSequence가 반환된다는 점도 다릅니다.

아래는 joined(seperator:)의 예제입니다.
JoinedSequence가 반환되며, 배열로 사용하고 싶을 땐 마찬가지로 Array에 해당값으로 초기화하여 사용합니다.
let someNumbers = [[0, 1, 2, 3, 4], [5, 6 ,7, 8, 9]]
let joinedNumbers = someNumbers.joined(separator: [-1])
let joinedNumberArray = Array(joinedNumbers)
print(joinedNumbers) // JoinedSequence<Array<Array<Int>>>(_base: [[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]], _separator: ContiguousArray([-1]))
print(joinedNumberArray) // [0, 1, 2, 3, 4, -1, 5, 6, 7, 8, 9]