複数の値を持つ単純な if-let ステートメントを作成しようとしています。ブロックは、if
すべてのオプション変数が非 nil である場合にのみ実行されるべきでありif
、通常の単一割り当ての if-let と同様に、ブロック内にのみ存在する新しい let-vars (定数?) に割り当てられる必要があります。
var a: String? = "A"
var b: String? // nil
if let (m, n) = (a, b) {
println("m: \(m), n: \(n)")
} else {
println("too bad")
}
// error: Bound value in a conditional binding must be of Optional type
// this of course is because the tuple itself is not an Optional
// let's try that to be sure that's the problem...
let mysteryTuple: (String?, String?)? = (a, b)
if let (m, n) = mysteryTuple {
println("m: \(m), n: \(n)")
} else {
println("too bad")
}
// yeah, no errors, but not the behavior I want (printed "m: A, n: nil")
// and in a different way:
if let m = a, n = b {
println("m: \(m), n: \(n)")
} else {
println("too bad")
}
// a couple syntax errors (even though 'let m = a, n = b'
// works on its own, outside the if statement)
これは可能ですか?そうでない場合 (私は推測しています)、Apple は将来これを実装する予定 (または実装すべき) だと思いますか?