具有函数的if语句调用可选函数

时间:2019-06-13 15:14:44

标签: swift

我是Swift的新手,正在致力于将Objective-C代码库迁移到Swift。 我很难找到一种很好的方法来构建涉及OR或对可选对象的方法调用的条件。

说我有2个对象'ojb1'和'obj2'

在Objective-C中,我可以写:

return [obj1 booleanMethod] || [obj2 booleanMethod]

如果两个对象中的任何一个都不为nil并且其方法返回true,则返回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 个答案:

答案 0 :(得分:2)

在Swift中,您可以将==与可选参数一起使用。在这种情况下,直接比较Booltrue很有用。

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

对于nil可选,与true的比较将为假。

答案 1 :(得分:1)

快速将obj1obj2作为2个可选内容,然后尝试

return obj1?.booleanMethod() ?? false || obj2?.booleanMethod() ?? false