附加到一个空数组给出错误

时间:2014-08-21 05:18:44

标签: arrays swift append

我创建了一个空数组来存储表单(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中的有效命令。我没有看到我的代码有什么问题吗?或者还有另一种方法可以做我想做的事情吗?

1 个答案:

答案 0 :(得分:4)

问题是x: newDataX, y: newDataY没有被解析为单个参数 - 而是将它作为2个单独的参数传递给append函数,并且编译器查找匹配的{{1}函数采用appendInt

您可以通过在追加之前定义元组来解决问题:

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