Я обнаружил, что могу написать этот код:
func optionalReturn() -> Int? {
// do sth. and return maybe an Int, otherwise:
return nil
}
if let x = optionalReturn(), x > 5 {
print("test exists and is greater then 5")
}
Теперь я стою перед следующей проблемой: я хочу иметь if, который обрабатывает два случая:
регистр 1: x
не существует, ИЛИ
регистр 2: x
существует, но больше значения 5
Это не работает:
if x == nil || (let x = optionalReturn(), x > 5) {
...
}
Это что-то другое. как это возможно в Swift?
UPDATE
Приведенный выше код был упрощен, чтобы показать мою проблему, но мой случай немного отличается, потому что моя вызываемая функция не 't возвращает необязательный Int
, он возвращает необязательный struct
:
struct TestStruct {
var x: Int
var y: Int
}
func optionalReturn() -> TestStruct? {
// do sth. and maybe return a TestStruct(....), otherwise:
return nil
}
let test = optionalReturn()
if test == nil || ...?
UPDATE 2
В моем первом обновлении я допустил ошибку. Благодаря Christik, который упомянул об этом в комментариях, мой код имел ошибку и работал бы без нее. Я принял его ответ как решение, но моя первая идея также была правильной: Swift пропускает другие if-условия, если первое OR-условие верно. Так что этот код работает так же:
...
if test == nil || (test!.x > 5 && test!.y > 6) {
print("I am here")
}