Swift实现“或”操作符的3种方法示例

2020-01-09 00:13:08王振洲

or: true

大家发现没有,在vLeft为true的情况下,并没有再去调用getRightRes函数。这就解决了第一种方式中存在的问题。
现在我们把vLeft的值改为let vLeft = 3 > 12,再次运行代码,会发现结果如下:

getting the right value...
or: true

这就说明,在左侧值value1为false的情况时,会执行value2的闭包,闭包中的函数getRightRes会被执行,并返回结果。
这个函数的调用方式还可以简写为如下方式:


let res = or(vLeft) {
  getRightRes()
}

第三种:

这种方式只是在第二种方式的写法上进行了优化,即在闭包参数的前面加了@autoclosure关键字,作用就是在调用这个函数的时候,写法非常优雅,你甚至都感受不到闭包的存在!代码如下:


func or(_ value1: Bool, _ value2: @autoclosure() -> Bool) -> Bool {
  if value1 {
    return true
  }
  return value2()
}

调用代码:


let res = or(vLeft, getRightRes())
print("or: (res)n")

运行结果是跟第二种方式是一样的,但写法上比第二种简洁了很多。跟第一种普通方式的调用代码竟然是一模一样的。
以上就是我总结的使用Swift实现“或”操作符的三种方式了,希望对大家有帮助。