arrays - 使用 “+=” 运算符将一个数组连接到另一个可选值数组

标签 arrays swift optional-values

我有一个对象数组:

var fooArray = [Foo]()

如果我想用 Foo 对象附加另一个数组,我可以使用 += :

fooArray += anotherFooArray

这个有效。

但是如果我将数组中的 Foo 对象设为可选:

var fooArray = [Foo?]()

进行串联会引发错误:

[Foo?]() is not identical to 'CGFloat'

我绝对不明白这是什么问题,以及 CGFloat 类型与此有什么关系?

最佳答案

问题是 FooFoo?有 2 种不同的类型(可选的实际上是 Optional<T> 枚举的一个实例)。

为了追加到数组中,元素必须是同一类型 - FooOptional<Foo>不是。

您可以通过简单地将数组转换为附加到可选的数组 Foo 来解决这个问题。小号:

fooArray += anotherFooArray as [Foo?]

至于误导性的错误消息,我认为它正在尝试应用 += 的重载。运算符将 CGFloat 作为参数之一,因为它无法将提供的参数与为数组类型定义的重载相匹配。

关于arrays - 使用 “+=” 运算符将一个数组连接到另一个可选值数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27967682/

相关文章:

c++ - 仅从文件中的特定行读取数字

python - 将 0 替换为 pandas 数据帧中数组中的最后一个值(类似于具有 NaN 值的 fillna 方法)

python - 在 Python 中构建二维数组

arrays - 展开可选值时发现 nil(音乐库)

Scala - 按可选字段排序,最后没有值

javascript - 如何创建一个可选组,但该组是否存在与我的正则表达式最匹配?

c - 如何在for循环中连接字符串?

ios - 单击按钮时将按钮图像从一个图像更改为另一个图像时出错

ios - 如何使用 Swift 4 在 ARKit 中旋转虚拟对象

Swift 4 以编程方式定位元素