if let
ステートメントを省略形として使用して、オプションのnilをチェックしてからラップを解除できることはわかっています。
ただし、論理AND演算子を使用して、それを別の式と組み合わせたいと思い&&
ます。
したがって、たとえば、ここでは、オプションのチェーンを行ってラップを解除し、オプションでrootViewControllerをtabBarControllerにダウンキャストします。しかし、ifステートメントをネストするのではなく、それらを組み合わせたいと思います。
if let tabBarController = window!.rootViewController as? UITabBarController {
if tabBarController.viewControllers.count > 0 {
println("do stuff")
}
}
組み合わせた寄付:
if let tabBarController = window!.rootViewController as? UITabBarController &&
tabBarController.viewControllers.count > 0 {
println("do stuff")
}
}
上記はコンパイルエラーを示します未解決の識別子 'tabBarController'の使用
簡素化:
if let tabBarController = window!.rootViewController as? UITabBarController && true {
println("do stuff")
}
これにより、コンパイルエラーが発生します。条件付きバインディングのバインド値は、オプションタイプである必要があります。さまざまな構文のバリエーションを試みた結果、それぞれに異なるコンパイラエラーが発生しました。順序と括弧の組み合わせはまだわかりません。
それで、問題は、それが可能であり、もしそうなら正しい構文は何ですか?
私はこれをしたいという注意if
文のないswitch
文または三項?
演算子。
var foo : Int? = 10; if let bar = foo { if bar == 10 { println("Great success!") }}
if let bar = foo && bar == 10
はUse of unresolved identifier "bar"
(2番目bar
のもちろん)です。
bridgeToObjectiveC
ベータ5でなくなった(そして、おそらく一般的な使用を意図したものではなかった)。2. とにかくfirst
、Swiftの組み込みArray
型にメソッドがあります。