Pir*_*omo 0 syntax short-circuiting swift
var anArray = [3, 2, 1]
func sortAndCheck(array: inout [Int]) -> Bool{
array.sort()
return array.contains(3)
}
if anArray.contains(3){
print(anArray) // Prints [3, 2, 1]
}
if anArray.contains(3) && sortAndCheck(array: &anArray){
print(anArray) // Prints [1, 2, 3]
}
Run Code Online (Sandbox Code Playgroud)
对于第二条if语句,由于anArray.contains(3)已经为真,为什么sortAndCheck(array: &anArray)仍要求值并对anArray排序?
短路意味着仅当结果已经明确时才对表达式的下一部分进行求值。如果部分之前&&是true那么结果还是可以同时false和true和下部分有进行评估。
情况是:
1. true && true => true
2. true && false => false
3. false && false => false
4. false && true => false
Run Code Online (Sandbox Code Playgroud)
在评估了左操作数之后,我们得到:
true && ??
Run Code Online (Sandbox Code Playgroud)
可以在情况1或2中结束,结果不同。
另一方面,如果我们有:
false && ??
Run Code Online (Sandbox Code Playgroud)
那么结果将是情况3或4,两者都是,false并且表达式将短路。
| 归档时间: |
|
| 查看次数: |
189 次 |
| 最近记录: |