Мы знаем, что можем использовать 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")
}
Это дает ошибку компиляции. Связанное значение в условной привязке должно иметь тип Optional . После попыток различных синтаксических вариаций каждая из них выдает разные ошибки компилятора. Мне еще предстоит найти выигрышную комбинацию порядка и скобок.
Итак, вопрос в том, возможно ли это, и если да, то каков правильный синтаксис?
Обратите внимание , что я хочу сделать это с if
заявлением не в switch
заявлении или тройным ?
оператором.