Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 追加到空数组时出现错误_Arrays_Swift_Append - Fatal编程技术网

Arrays 追加到空数组时出现错误

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

我已经创建了一个空数组来存储形式(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',这让我非常困惑。当我专门追加一个整数和一个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
或类型匹配中的一个小错误?我会启动一个雷达。可能是