【问题标题】:Concatenating to an Optional Array with the "+=" operator使用 "+=" 运算符连接到可选数组
【发布时间】:2014-08-23 09:20:25
【问题描述】:

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

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

这给了我一个错误:

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

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

【问题讨论】:

    标签: arrays swift optional xcode6-beta6


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-24
      • 1970-01-01
      • 2017-03-29
      • 2019-07-21
      • 2012-05-07
      • 2017-05-20
      • 1970-01-01
      • 2020-04-03
      相关资源
      最近更新 更多