与map()
和stride()
一种可能的解决方案:
let vehicles = ["Aeroplane", "Bicycle", "CarVehicle", "Lorry", "Motorbike", "Scooter", "Ship", "Train"]
let each = 4
let resultArray = map(stride(from: 0, to: vehicles.count, by: each)) {
vehicles[$0 ..< advance($0, each, vehicles.count)]
}
println(resultArray)
// [[Aeroplane, Bicycle, CarVehicle, Lorry], [Motorbike, Scooter, Ship, Train]]
在闭合保证advance()
该代码 工作即使数组元素的数量不是4 的倍数的使用(以及然后在结果最后子阵列会更短。)
你可以把它简化为
let resultArray = map(stride(from: 0, to: vehicles.count, by: each)) {
vehicles[$0 ..< $0 + each]
}
,如果你知道数组元素的个数是4
多严格地说resultArray
的元素是不能阵列 但阵列片。在许多情况下,这并不重要,否则你 可以通过
let resultArray = map(stride(from: 0, to: vehicles.count, by: each)) {
Array(vehicles[$0 ..< advance($0, each, vehicles.count)])
}
参见[我的回答(http://stackoverflow.com/a/33540708/1966109)替换它的非常类似的问题,提供高达5种不同的方式来解决你的问题。 –