оператор if с вызовами функций для опций - PullRequest
0 голосов
/ 13 июня 2019

Я новичок в Swift и работаю над переносом нашей кодовой базы Objective-C в Swift.Я с трудом нахожу хороший способ сделать условное построение с использованием OR и вызовов методов для опциональных объектов.

Скажем, у меня есть 2 объекта 'ojb1' и 'obj2'

ВObjective-C я могу написать:

return [obj1 booleanMethod] || [obj2 booleanMethod]

это вернет true, если какой-либо из двух объектов не nil и его метод возвращает true.

в Swift мне нужно:

if let obj1 = obj1, obj1.booleanMethod() {
    return true
} else if let obj2 = obj2, obj2.booleanMethod() {
    return true
}
return false

или

return ((obj1 != nil && obj1!.booleanMethod()) || (obj2 != nil && obj2!.booleanMethod())

есть ли лучший / более чистый / короткий способ сделать это?

спасибо

Ответы [ 2 ]

2 голосов
/ 13 июня 2019

В Swift вы можете использовать == с опциями.В этом случае полезно прямое сравнение Bool с true.

return obj1?.booleanMethod() == true || obj2?.booleanMethod() == true

В случае необязательного nil сравнение с true будет ложным.

1 голос
/ 13 июня 2019

В экспресс-экспрессе obj1 и obj2 как 2 варианта, затем попробуйте

return obj1?.booleanMethod() ?? false || obj2?.booleanMethod() ?? false
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...