我在swift中遇到了一个问题。在Objective-C中,我这样写:
return !item ? self.people.count : item.children.count
因此,如果item为nil,则返回self.people.count,否则返回item.children.count。如何在Swift中编写这样的东西?
答案 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