在swift中使用可选变量的冗余 - 是否有一个优雅的解决方案?

时间:2015-04-14 07:52:23

标签: swift

这可能被视为一个小问题,但它在代码中看起来很难看,我想解决它。

我声明了一个可选变量,如果它不为空(!= nil),我想稍后更改它。代码是:

首先声明

private var myVariable: Int? // Optional Integer variable

后来减少,当不是空的时候

{
    if myVariable != nil {myVariable!--} // Same condition in "if" and in unwrapping
}

即使!确保变量具有值,我也需要if-condition。这是多余的,意味着Swift必须进行两次相同的比较。

这样做有更优雅的方法吗?

我目前的Xcode版本是6.3。

4 个答案:

答案 0 :(得分:3)

就像示例一样,您可以执行以下操作:

myVariable?++
myVariable?--
myVariable? += 10

这使用可选链接 - 如果myVariable具有非零值,则将其解包并递增。否则该语句返回nil。

答案 1 :(得分:2)

回答你的问题是Optional Chaining

myVariable?--

答案 2 :(得分:0)

if let myVariable = myVariable { //if - let unwrapping
    myVariable-- //don't need the suffix now
}

答案 3 :(得分:0)

我相信给予“!”的意义。在变量之后,Swift不需要仔细检查。你用“!”说变量不是nil,它有一个值,所以不会仔细检查。