Xcode6.3 beta2 のリリースノートを見たら、こんなことができるようになるみたいでした。
var allowEmpty = true
var items:[Int]? = [ 0, 1, 2 ]
var emptyItems:[Int]? = [Int]()
if allowEmpty || items?.count ?? 0 > 0 {
println("do this")
}
if allowEmpty || emptyItems?.count ?? 0 > 0 {
println("do this") // not executed
}
?? は三項演算子を簡単に書けるようにしたような感じ。
?? は変数がnilかどうかの分岐を簡単に書けるようにしたような感じ。
(a != nil) ? a! : b
を a ?? b
で書ける。
Swift本の Nil Coalescing Operator という項で説明されていますね。
この場合これでもいけます。
var allowEmpty = true
var items:[Int]? = [ 0, 1, 2 ]
var emptyItems:[Int]? = [Int]()
if allowEmpty, let i = items where i.count > 0 {
println("do this")
}
if allowEmpty, let i = emptyItems where i.count > 0 {
println("do this") // not executed
}