在不更改值本身时,对可选值使用内联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语句来处理像这样的选项有什么缺点?
答案 0 :(得分:3)
我看不出任何不利因素,除了我认为看起来不太好,所以我更喜欢可选的绑定。但是我认为你可以改写为:
isOptionalValueCount = optionalValue?.count ?? 0
如果optionalValue
为nil
,则左表达式的计算结果为nil
,而nil合并运算符则返回右侧的表达式。