swift中带有可选变量的冗余-有优雅的解决方案吗?
这可能被视为一个小问题,但它在代码中看起来很丑陋,我想解决它 我声明了一个可选变量,并希望以后更改它,如果它不是空的(swift中带有可选变量的冗余-有优雅的解决方案吗?,swift,Swift,这可能被视为一个小问题,但它在代码中看起来很丑陋,我想解决它 我声明了一个可选变量,并希望以后更改它,如果它不是空的(!=nil),则此变量的代码为: 先申报 private var myVariable: Int? // Optional Integer variable 以后的减量,当不为空时 { if myVariable != nil {myVariable!--} // Same condition in "if" and in unwrapping } 我需要即使使用if
!=nil
),则此变量的代码为:
先申报
private var myVariable: Int? // Optional Integer variable
以后的减量,当不为空时
{
if myVariable != nil {myVariable!--} // Same condition in "if" and in unwrapping
}
我需要
即使使用if条件
确定变量有值。这是多余的,意味着Swift必须进行两次相同的比较
有没有更优雅的方法
我当前的Xcode版本是6.3。作为示例,您可以执行以下操作:
myVariable?++
myVariable?--
myVariable? += 10
这使用可选的链接-如果
myVariable
具有非nil值,则该值将展开并递增。否则,语句返回nil。作为示例,您可以执行以下操作:
myVariable?++
myVariable?--
myVariable? += 10
这使用可选的链接-如果
myVariable
具有非nil值,则该值将展开并递增。否则,语句将返回零。您的问题答案为
你的问题的答案是
我相信在变量后面加“!”的意义在于,Swift不需要再次检查。您用“!”表示myVariable不是nil,它有一个值,这样它就不会重复检查。我相信在变量后面加“!”的意义在于,Swift不需要重复检查。您用“!”表示myVariable不是nil,它有一个值,因此不会重复检查。
myVariable=myVariable.map{$0-1}
,尽管我不确定这是否真的更好。这个怎么样<代码>myVariable?+=1myVariable=myVariable.map{$0-1}
虽然我不确定这是否真的更好。这个怎么样<代码>myVariable?+=1或只是myVariable?++
或只是myVariable?++
这实际上是我尝试过的事情之一,但没有成功。首先,使用将其定义为只读的let
定义myVariable
。没有办法减少它或给它赋值。第二,即使您能够在if主体内更改myVariable
的值,它仍然只会更改内部myVariable
的值,而不会更改外部变量的值。这实际上是我尝试过的事情之一,但没有起作用。首先,使用将其定义为只读的let
定义myVariable
。没有办法减少它或给它赋值。第二,即使您能够在if主体内部更改myVariable
的值,它仍然只会更改内部myVariable
的值,而不会更改外部变量的值。在使用“强制展开”操作符之前,您需要检查该值是否为非零。如果您使用它并且可选值为nil,您的程序将崩溃。在使用“强制展开”操作符之前,您确实需要检查该值是否为非nil。如果您使用它,并且可选值为nil,您的程序将崩溃。
if let myVariable = myVariable { //if - let unwrapping
myVariable-- //don't need the suffix now
}