如何安全地从arrayOfStrings
中解开第一个可选项目以使用pounds
仅获得默认值为0的coalescing unwrapping
?
基于下面的代码,我想要的是能够获取5
,但是如果该值为空,则将0设置为默认值,例如,如果measurement
为"lb. 8oz."
,我想要pounds
得到值0。
在以下示例中,我确实得到了5
,但是如果我将measurement
从"5lb. 8oz."
更改为"lb. 8oz."
,它会崩溃
let measurement = "5lb. 8oz."
let arrayOfStrings:[String] = measurement.components(separatedBy: "l")
print("Array of Strings: \(arrayOfStrings)") //Output: Array of Strings: ["5", "b. 8oz."]
let pounds = Double(arrayOfStrings[0] ?? "0")
print("Pounds \(pounds!)") //Output: Pounds 5.0
错误:将measurement
更改为"lb. 8oz."
致命错误:解开可选值时意外发现nil
FYI-我正在寻找单行解决方案,我知道如何使用if let
或guard
。
您可以解开数组的访问权限[[和转换为Double的转换
let pounds = Double(arrayOfStrings.first ?? "0") ?? 0.0
let pounds = Double(arrayOfStrings[0]) ?? 0.0
print("Pounds \(pounds)")
为我工作。