Swift定义具有多个Integer Range一个衬管的阵列

时间:2016-03-01 08:23:57

标签: ios swift

我有一个我定义的数组

  var array: [Int] = Array(1...24)

然后我添加

   array.insert(9999, atIndex: 0)

我想做点什么

  var array: [Int] = Array(9999...9999,1...24)

这可能吗?

3 个答案:

答案 0 :(得分:2)

您可以简单地连接从每个范围创建的数组:

let array = Array(10 ... 14) + Array(1 ... 24)

可替换地:

let array = [10 ... 14, 1 ... 4].flatMap { $0 }

具有不创建中间数组的小优势 (正如您在开源实现https://github.com/apple/swift/blob/master/stdlib/public/core/SequenceAlgorithms.swift.gyb中看到的那样)。

答案 1 :(得分:1)

对于范围数组,您将数组定义为




  let array:[Range< Int>] = [0 ... 1,5。 ..100]
  




依旧等等。




答案 2 :(得分:1)

正如MartinR所提到的,你可以简单地使用+运算符来表示数组;如果这个方法是你的答案,那么这个帖子就是重复的(见MartinR:s link),应该关闭。

如果您明确希望一次使用多个范围初始化Int数组(请参阅hola:s关于范围数组的答案),您可以按如下方式使用reduce

let arr = [1...5, 11...15].reduce([]) { $0.0 + Array($0.1) }

或者,flatten

var arr = Array([1...5, 11...15].flatten())

以上两者都会产生以下结果

print(arr.dynamicType) // Array<Int>
print(arr)             // [1, 2, 3, 4, 5, 11, 12, 13, 14, 15]