使用带有可选值的内联 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
如果 optionalValue
为 nil
,则左侧表达式的计算结果为 nil
,nil 合并运算符 returns 为右侧的表达式。
当不更改值本身时,对可选值使用内联 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 合并运算符 returns 为右侧的表达式。