iOS知识点-12.用 Swift 实现或(||)操作

Swift Basics
  1. 用 Swift 实现或(||)操作

这题解法很多,下面给出一种最直接的解法:

* func ||(left: Bool, right: Bool) –> Bool {
*   if left {
*     return true
*   } else {
*     return right
*   }
* }

上面这种解法勉强正确,但并不高效。或(||)操作的本质是当左边为真的时候,我们无需计算右边。而上面这种是将右边默认值预先准备好,再传入进行操作。当右边值的计算十分复杂时会造成性能上的浪费。所以,上面这种做法违反了或(||)操作的本质。正确的实现方法如下:

* func ||(left: Bool, right: @autoclosure () -> Bool) –> Bool {
*   if left {
*     return true
*   } else {
*     return right()
*   }
* }

autoclosure 可以将右边值的计算推迟到判定left为false的时候,这样就可以避免第一种方法带来的不必要开销了。

上一题 目录 下一题

你可能感兴趣的:(iOS知识点-12.用 Swift 实现或(||)操作)