Można dokonać rozszerzenia więc może powrócić tablicę dwóch macierzy, współpracując z Ints, smyczki, etc:
extension Array {
func split() -> [[Element]] {
let ct = self.count
let half = ct/2
let leftSplit = self[0 ..< half]
let rightSplit = self[half ..< ct]
return [Array(leftSplit), Array(rightSplit)]
}
}
let deck = ["J", "Q", "K", "A"]
let nums = [0, 1, 2, 3, 4]
deck.split() // [["J", "Q"], ["K", "A"]]
nums.split() // [[0, 1], [2, 3, 4]]
Ale wracając nazwanego krotka jest nawet lepiej, bo to wymusza fakt, że oczekiwać dokładnie dwóch tablic w wyniku:
extension Array {
func split() -> (left: [Element], right: [Element]) {
let ct = self.count
let half = ct/2
let leftSplit = self[0 ..< half]
let rightSplit = self[half ..< ct]
return (left: Array(leftSplit), right: Array(rightSplit))
}
}
let deck = ["J", "Q", "K", "A"]
let splitDeck = deck.split()
print(splitDeck.left) // ["J", "Q"]
print(splitDeck.right) // ["K", "A"]
Uwaga: kredyty idzie do Andrei i Qbyte za udzielenie pierwszej poprawnej odpowiedzi, jestem po prostu dodanie informacji.
zajrzyj na http://swiftdoc.org/func/split/ –