我创建了一个空数组来存储表单(Int,Double)的数据。我放弃了尝试直接将一个元组附加到数组,因为似乎没有设置为快速执行此操作。所以我的代码示例如下:
var data: [(x: Int,y: Double)] = []
var newDataX: Int = 1
var newDataY: Double = 2.0
data.append(x: newDataX,y: newDataY)
追加行的错误消息是“Type'T'不符合协议'IntegerLiteralConvertible',这让我感到困惑。当我特意追加一个整数和一个double(即.data.append(1,2.0) )),我没有收到错误信息。如果我尝试使用变量附加其中一个特定的和其中一个,我得到消息,无论哪个是变量。
我会使用+ =命令只是将一个元组附加到数组上,但我理解它的方式,这不再是beta5中的有效命令。我没有看到我的代码有什么问题吗?或者还有另一种方法可以做我想做的事情吗?
答案 0 :(得分:4)
问题是x: newDataX, y: newDataY
没有被解析为单个参数 - 而是将它作为2个单独的参数传递给append
函数,并且编译器查找匹配的{{1}函数采用append
和Int
。
您可以通过在追加之前定义元组来解决问题:
Double
或明确表示参数对是元组。元组由括号let newData = (x: 1, y: 2.0)
data.append(newData)
括起来的列表标识,但不幸的是,这不起作用:
(1, 2.0)
如果你真的需要/想要在一行中追加,你可以按如下方式使用闭包:
data.append( (x: 1, y: 2.0) )
更优雅的解决方案是使用data.append( { (x: newDataX, y: newDataY) }() )
:
typealias