这可能被视为一个小问题,但它在代码中看起来很难看,我想解决它。
我声明了一个可选变量,如果它不为空(!= 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。
答案 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,它有一个值,所以不会仔细检查。