【发布时间】: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
我在 swift 中遇到了一个问题。在 Objective-C 中我是这样写的:
return !item ? self.people.count : item.children.count
因此,如果 item 为 nil,则返回 self.people.count,否则返回 item.children.count。如何在 Swift 中编写这样的东西?
【问题讨论】:
标签: objective-c swift
return (item as? Person)?.children.count ?? self.people.count
【讨论】:
不要将 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。
【讨论】: