如何创建元组数组?

时间:2014-07-02 19:40:48

标签: arrays swift tuples

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

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

以上导致编译器错误。

为什么那么错?以下工作正常:

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

4 个答案:

答案 0 :(得分:21)

它适用于类型别名:

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]()

答案 1 :(得分:6)

你可以这样做,只是你的任务过于复杂:

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

或制作一个空的:

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

答案 2 :(得分:2)

这也有效:

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

奇怪的是,append只想要一套parens:

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

答案 3 :(得分:0)

不确定早期版本的Swift,但是当你想提供初始值时,这适用于Swift 3:

<%= image_tag(tour.tour_category.icon.url(:thumb), class: 'fit-image') %>