我正在尝试将多个字符串附加到数组中。 此代码按预期工作:
var myArray: [String] = []
myArray += ["dog", "cat"]
这给了我一个错误:
var myArray: [String]! = []
myArray += ["dog", "cat"] //error: '[String]!' is not identical to 'UInt8'
这是一个错误,还是连接到一个不应该工作的可选数组?
答案 0 :(得分:0)
myArray
是可选的,因此您必须显式解包它才能使追加工作:
myArray! += ["dog", "cat"]
这听起来违反直觉,因为隐式解包的选项的目的是避免手动展开。然而,文档说:
隐式展开的可选项是幕后的常规可选项,但也可以像非可选值一样使用,而无需在每次访问时解包可选值
我的解释是,作为引擎盖下的可选项,+=
运算符应用于枚举,而不是应用程序本身包含的实际类型。