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

Is it safe to use inline if statements with optional values

当不更改值本身时,对可选值使用内联 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

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