我试图在Swift中创建一个元组数组,但是遇到了很大困难:
var fun: (num1: Int, num2: Int)[] = (num1: Int, num2: Int)[]()
以上导致编译器错误。
为什么那么错?以下工作正常:
var foo: Int[] = Int[]()
答案 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') %>