【问题标题】:Nil Coalescing Operator SwiftNil 合并运算符 Swift
【发布时间】:2015-03-31 11:10:20
【问题描述】:

我在 swift 中遇到了一个问题。在 Objective-C 中我是这样写的:

return !item ? self.people.count : item.children.count

因此,如果 item 为 nil,则返回 self.people.count,否则返回 item.children.count。如何在 Swift 中编写这样的东西?

【问题讨论】:

    标签: objective-c swift


    【解决方案1】:
    return (item as? Person)?.children.count ?? self.people.count
    

    【讨论】:

    • 有效!我刚刚开始使用 Swift。在我使用 Objective C 之前
    • 太棒了!很高兴我能帮忙:)
    • 当我运行应用程序时,我得到:致命错误:在该行上展开可选值时意外发现 nil。项目真的是零
    【解决方案2】:

    不要将 nil 合并运算符与条件速记运算符混淆,后者在 Swift 和 Objective-C 中都可用:

    return !item ? self.people.count : item.children.count
    

    如果!item 计算结果为true,则上面的行返回self.people.count,否则返回item.children.count。它在 Objective-C 和 Swift 中都有效。但是,如果您想检查 item 是否为 nil 值,那么在 Swift 中您需要专门进行这样的检查:

    return item == nil ? self.people.count : item.children.count
    

    Nil 合并运算符允许将其重写为更短:

    return item?.children.count ?? self.people.count
    

    如果项目不是nil,它会返回它的计数。否则,您将获得 people 的计数。

    有关更多信息,您可能需要查看此 Swift 语言指南chapter

    【讨论】:

      猜你喜欢
      • 2018-10-24
      • 1970-01-01
      • 1970-01-01
      • 2017-08-26
      • 1970-01-01
      • 2016-09-03
      • 2017-11-03
      • 1970-01-01
      • 2014-12-10
      相关资源
      最近更新 更多