Nil Coalescing Operator Swift

时间:2015-02-01 10:57:15

标签: objective-c swift

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

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

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

2 个答案:

答案 0 :(得分:5)

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

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

如果self.people.count评估为!item,则上述行返回true,否则返回item.children.count。它在Objective-C和Swift中都有效。但是,如果您想检查item是否为nil值,那么在Swift中您需要专门进行此类检查:

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

Nil coalescing运算符允许重写这个更短的内容:

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

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

有关详细信息,您可以查看此Swift语言指南chapter

答案 1 :(得分:1)

return (item as? Person)?.children.count ?? self.people.count