- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我创建了一个空数组来存储 (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/
我有一个经典的 ASP 页面 (VBscript),它在服务器端生成 XML,然后 Response.Writes。该页面根本没有客户端。 但是我需要将其转换为 JSON。由于我找不到有效的 ASP
我想从客户端应用程序的 HDFS 中读取特定的 SequenceFile。我可以使用 SequenceFile.Reader 来做到这一点,它工作正常。但是是否也可以通过分析抛出的 IOExcepti
我是一名优秀的程序员,十分优秀!