Arrays 追加到空数组时出现错误
我已经创建了一个空数组来存储形式(Int,Double)的数据。我放弃了直接将元组附加到数组中的尝试,因为swift似乎不适合这样做。我的代码示例如下所示:Arrays 追加到空数组时出现错误,arrays,swift,append,Arrays,Swift,Append,我已经创建了一个空数组来存储形式(Int,Double)的数据。我放弃了直接将元组附加到数组中的尝试,因为swift似乎不适合这样做。我的代码示例如下所示: var data: [(x: Int,y: Double)] = [] var newDataX: Int = 1 var newDataY: Double = 2.0 data.append(x: newDataX,y: newDataY) 追加行的错误消息是“Type'T'不符合协议'IntegerLiteralConvertible
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中不再是一个有效的命令。我的代码中是否有我看不到的错误?或者是否有其他方法来执行我想执行的操作?问题是,
x:newDataX,y:newDataY
没有作为单个参数解决er-相反,它作为两个单独的参数传递给append
函数,编译器将查找匹配的append
函数,该函数采用Int
和双精度
您可以通过在追加之前定义元组来解决此问题:
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
:
typealias MyTuple = (x: Int, y: Double)
var data: [MyTuple] = []
var newDataX: Int = 1
var newDataY: Double = 2.0
data.append(MyTuple(x: 1, y: 2.0))
问题是,
x:newDataX,y:newDataY
没有作为单个参数解决-而是作为两个单独的参数传递给append
函数,编译器将查找匹配的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
:
typealias MyTuple = (x: Int, y: Double)
var data: [MyTuple] = []
var newDataX: Int = 1
var newDataY: Double = 2.0
data.append(MyTuple(x: 1, y: 2.0))
如果您对newDataX和newDataY使用
let
而不是var
,那么代码的可能重复就可以了。可能是append
或类型匹配中的一个小错误?我会引起注意。如果您对您使用let
而不是var
,那么代码的可能重复就可以了你的newDataX和newDataY。可能是append
或类型匹配中的一个小错误?我会启动一个雷达。可能是