在这里设置fullLength
的正确方法是什么?
var index = foo.index(foo.startIndex, offsetBy: SOME_NUM)
let length = Int(foo.substring(to: index))
if let fullLength = length? + SOME_NUM {
return
}
此处的问题是length?
是可选的。我有这个:
fullLength = length! + SOME_NUM
,但我不想在!
为零的情况下使用length
冒险。
答案 0 :(得分:2)
您可以将其重写为
if let length = length {
let fullLength = length + SOME_NUM
}
答案 1 :(得分:2)
你可以使用nil-Coalescing运算符。为了帮助你理解nil-Coalescing运算符,让我们举一个例子,这也将解决你的问题.nil-coalescing operator' ??'在一个 ?? b如果a包含值,则展开可选a;如果a为n,则返回默认类型b。它是
的简写 a != nil ? a! : b
现在回答你的问题
var index = foo.index(foo.startIndex, offsetBy: SOME_NUM)
let length = Int(foo.substring(to: index))
let someDefaultValue = 0
let fullLength = length ?? someDefaultValue + SOME_NUM
// or to be precise , you can also
//replace someDefaultValue with 0 in above code
答案 2 :(得分:1)
if let length = length
{
fullLength = length + SOME_NUM
}
答案 3 :(得分:1)
我会这样做:
let index = foo.index(foo.startIndex, offsetBy: SOME_NUM)
guard let length = Int(foo.substring(to: index)) else {
//show error
//return reasonable value for error
}
let fullLength = length + SOME_NUM
这种方式解决问题,因为length
是有效数字(而不是nil),作为执行其余代码的前提条件。