Swift Basics
- 用 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的时候,这样就可以避免第一种方法带来的不必要开销了。
上一题 | 目录 | 下一题 |
---|