swift 如何创建元组数组?

ymzxtsji  于 2022-12-10  发布在  Swift
关注(0)|答案(5)|浏览(145)

我试图在Swift中创建一个元组数组,但遇到了很大的困难:

var fun: (num1: Int, num2: Int)[] = (num1: Int, num2: Int)[]()

上述情况会导致编译器错误。
为什么会出错呢?下面的代码是正确的:

var foo: Int[] = Int[]()
g6ll5ycj

g6ll5ycj1#

它使用类型别名:

typealias mytuple = (num1: Int, num2: Int)

var fun: mytuple[] = mytuple[]()
// Or just: var fun = mytuple[]()
fun.append((1,2))
fun.append((3,4))

println(fun)
// [(1, 2), (3, 4)]
  • 更新:* 自Xcode 6 Beta 3起,数组语法已更改:
var fun: [mytuple] = [mytuple]()
// Or just: var fun = [mytuple]()
9udxz4iz

9udxz4iz2#

你能做到这一点,只是你的任务过于复杂:

var tupleArray: [(num1: Int, num2: Int)] = [ (21, 23) ]

或者制造一个空容器:

var tupleArray: [(num1: Int, num2: Int)] = []
tupleArray += (1, 2)
println(tupleArray[0].num1)    // prints 1
ukxgm1gy

ukxgm1gy3#

这也适用于:

var fun:Array<(Int,Int)> = []
fun += (1,2)
fun += (3,4)

但奇怪的是,append只需要一组括号:

fun.append(5,6)

如果您想要tuple零件的标签:

var fun:Array<(num1: Int, num2: Int)> = []
fun += (1,2)                  // This still works
fun.append(3,4)               // This does not work
fun.append(num1: 3, num2: 4)  // but this does work
acruukt9

acruukt94#

不确定Swift的早期版本,但当你想提供初始值时,这在Swift 3中是有效的:

var values: [(num1: Int, num2: Int)] = {
    var values = [(num1: Int, num2: Int)]()
    for i in 0..<10 {
        values.append((num1: 0, num2: 0))
    }
    return values
}()
kmbjn2e3

kmbjn2e35#

也可以这样做。

var arr : [(num1: Int, num2 : Int)] = {
          let arr =  Array(repeating: (num1:  0, num2 :0), count : n)
          return arr
     }()

相关问题