Ми знаємо, що можемо використовувати if let
операцію як скорочення, щоб перевірити, чи не обов’язковий нуль, а потім розкрутити.
Однак я хочу поєднати це з іншим виразом, використовуючи логічний оператор AND &&
.
Так, наприклад, тут я роблю необов’язковий ланцюжок для розгортання та необов’язково знижую свій rootViewController до tabBarController. Але замість того, щоб вкладати заяви, я хотів би їх поєднати.
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"
(на другому bar
, звичайно).
bridgeToObjectiveC
вийшов у бета-версію 5 (і, можливо, ніколи не був призначений для загального використання). 2. У будь-якому випадку існує first
метод для вбудованого Array
типу Swift .