使用具有可选值的内联if语句是否安全

时间:2015-04-16 16:52:15

标签: ios swift optional

在不更改值本身时,对可选值使用内联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语句来处理像这样的选项有什么缺点?

1 个答案:

答案 0 :(得分:3)

我看不出任何不利因素,除了我认为看起来不太好,所以我更喜欢可选的绑定。但是我认为你可以改写为:

isOptionalValueCount = optionalValue?.count ?? 0

如果optionalValuenil,则左表达式的计算结果为nil,而nil合并运算符则返回右侧的表达式。