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型にメソッドがあります。