在不更改值本身的情况下,对可选值使用内联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合并运算符返回右侧的表达式。

10-04 20:33