在不更改值本身的情况下,对可选值使用内联if语句是否是一个好主意:-
var optionalValue:[Int]?
var isOptionalValueCount = 0
optionalValue = [4, 5, 6]
if let value = optionalValue {
isOptionalValueCount = value.count
}
println("amount of integers (using usual syntax): \(isOptionalValueCount)")
// "amount of integers (using usual syntax): 3"
isOptionalValueCount = optionalValue != nil ? optionalValue!.count : 0
println("amount of integers (using inline): \(isOptionalValueCount)")
// "amount of integers (using inline): 3"
这使代码更加简洁,但是我们仍然有“!”在我计算optionalValue.count-时,这似乎是一种不好的代码味道。
使用内联if语句处理此类可选内容有什么缺点?
最佳答案
除了我认为不好看之外,我没有看到任何缺点,因此我更喜欢可选绑定。但是我认为您可以将其重写为:
isOptionalValueCount = optionalValue?.count ?? 0
如果
optionalValue
是nil
,则左侧表达式的计算结果为nil
,并且nil合并运算符返回右侧的表达式。