Wiemy, że możemy użyć if let
instrukcji jako skrótu, aby sprawdzić opcjonalne zero, a następnie rozpakować.
Jednak chcę to połączyć z innym wyrażeniem, używając operatora logicznego AND &&
.
Na przykład tutaj wykonuję opcjonalne tworzenie łańcuchów, aby rozpakować i opcjonalnie obniżyć mój rootViewController do tabBarController. Ale zamiast zagnieżdżać instrukcje if, chciałbym je połączyć.
if let tabBarController = window!.rootViewController as? UITabBarController {
if tabBarController.viewControllers.count > 0 {
println("do stuff")
}
}
Dawanie łączone:
if let tabBarController = window!.rootViewController as? UITabBarController &&
tabBarController.viewControllers.count > 0 {
println("do stuff")
}
}
Powyższe powoduje błąd kompilacji Użycie nierozwiązanego identyfikatora 'tabBarController'
Upraszczanie:
if let tabBarController = window!.rootViewController as? UITabBarController && true {
println("do stuff")
}
Daje to błąd kompilacji Wartość powiązana w powiązaniu warunkowym musi być typu Opcjonalnego . Po próbie różnych wariacji składniowych każda daje inny błąd kompilatora. Nie znalazłem jeszcze zwycięskiej kombinacji kolejności i nawiasów.
Zatem pytanie brzmi, czy jest to możliwe, a jeśli tak, jaka jest poprawna składnia?
Zauważ, że chcę to zrobić z if
instrukcją, a nieswitch
instrukcją lub ?
operatorem trójskładnikowym .