gpt4 book ai didi

arrays - 追加到一个空数组给出错误

转载 作者:搜寻专家 更新时间:2023-11-01 06:24:31 25 4
gpt4 key购买 nike

我创建了一个空数组来存储 (Int,Double) 形式的数据。我放弃了直接将元组 append 到数组的尝试,因为似乎没有设置 swift 来执行此操作。所以我的代码示例如下所示:

var data: [(x: Int,y: Double)] = []
var newDataX: Int = 1
var newDataY: Double = 2.0
data.append(x: newDataX,y: newDataY)

追加行的错误消息是“Type 'T' does not conform to protocol 'IntegerLiteralConvertible' 这让我很困惑。当我特别追加一个整数和一个 double (即 data.append(1,2.0 )),我没有收到错误消息。如果我尝试使用变量 append 其中一个,无论哪个是变量,我都会收到消息。

我会使用 += 命令只是将一个元组 append 到数组上,但按照我的理解,这在 beta5 中不再是有效命令。我的代码有什么我没有看到的问题吗?还是有其他方法可以做我想做的事?

最佳答案

问题是 x: newDataX, y: newDataY 没有作为单个参数解析 - 而是作为 2 个单独的参数传递给 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))

关于arrays - 追加到一个空数组给出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25418724/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com