在Swift 3中解压缩可选整数的正确方法

时间:2017-01-03 23:14:41

标签: swift swift3

在这里设置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冒险。

4 个答案:

答案 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),作为执行其余代码的前提条件。