時々、次のようなSwift 2コードを書いていることに気づきます。
class Test {
var optionalInt: Int?
var nonOptionalInt: Int = 0
func test() {
if let i = optionalInt {
nonOptionalInt = i
}
// do more stuff
}
}
問題のある部分は次のとおりです。
if let i = optionalInt {
nonOptionalInt = i
}
つまり、optionalInt に値がある場合は、それを変数 nonOptionalInt に割り当て、それ以外の場合は何もしません。
if let iで中間変数を追加せずに、これをエレガントな1行で表現するSwift 2の同等の方法はありますか?
編集
最初の答えを熟考した後...
明らかに同等の方法があります
if optionalInt != nil {
nonOptionalInt = optionalInt!
}
三項演算子 ? : 元のコードでは発生しない didSet をトリガーする可能性があるため、同等ではありません (これが意図された副作用である場合は適切です)。
これまでのところ最もエレガントな答えは
nonOptionalInt = optionalInt ?? nonOptionalInt
また、三項演算子のような didSet をトリガーする可能性があるため、同等ではありません (これが意図されている場合も同様です)。
Appleへの私の願いは次のようなものになると思います
nonOptionalInt = optionalInt ??
また
nonOptionalInt ??= optionalInt