只需将元组分配给temp变量:
let tuple = ( id: idInt, name: nameString)arrayObj.append(tuple)
不知道为什么它不能那样工作-只是检查一个函数,像这样:
var array: [(param1: Int, param2: String)] = []func test(x: (param1: Int, param2: String)) { println(x)}test((param1: 2, param2: "Test"))array.append((param1: 2, param2: "Test"))
结果:该函数有效,而数组方法无效。
更新 :在 *** 场上尝试了以下代码:
struct Test<T> { func doSomething(param: T) { println(param) }}var test = Test<(param1: Int, param2: String)>()let tuple = (param1: 2, param2: "Test")test.doSomething(tuple)test.doSomething((param1: 2, param2: "Test"))
结果:当将
tuple变量传递给
doSomething-使用文字元组时,它不起作用,尽管编译器消息不同:
'((param1: Int, param2: String)) ->()' does not have a member named 'doSomething'
显然,编译器没有正确处理将文字元组传递给泛型类的方法(其中,元组是泛型类型)。
更新#2 :我对一个非泛型类重复了测试,但是使用了泛型方法,在这种情况下,它可以正常工作:
struct Test { func doSomething<T>(param: T) { println(param) }}var test = Test()let tuple = (param1: 2, param2: "Test")test.doSomething(tuple)test.doSomething((param1: 2, param2: "Test"))
因此,这绝对是仅与泛型类有关的问题。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)