2

我正在尝试将多个字符串附加到数组中。此代码按预期工作:

var myArray: [String] = []
myArray += ["dog", "cat"]

这给了我一个错误:

var myArray: [String]! = []
myArray += ["dog", "cat"] //error: '[String]!' is not identical to 'UInt8'

这是一个错误,还是连接到一个不应该工作的可选数组?

4

1 回答 1

0

myArray是可选的,因此您必须显式打开它才能使附加工作:

myArray! += ["dog", "cat"]

这听起来违反直觉,因为隐式展开的可选项的目的是避免手动展开。但是文档说:

隐式解包的可选项是幕后的普通可选项,但也可以像非可选值一样使用,无需在每次访问时都解包可选值

我的解释是,作为引擎盖下的可选枚举,+=运算符应用于枚举而不是可选本身包装的实际类型。

于 2014-08-23T09:31:33.327 回答