【发布时间】:2019-05-29 02:06:50
【问题描述】:
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]
}
对于第二个 if 语句,既然anArray.contains(3) 已经为真,为什么sortAndCheck(array: &anArray) 仍然会被求值并排序一个数组?
【问题讨论】:
-
通过短路执行,你的代码相当于
if anArray.contains(3) { if sortAndCheck(array: &anArray) { print(anArray) } }。由于anArray.contains(3)的计算结果为true,因此将计算sortAndCheck(array: &anArray)的返回值。假设true && x总是true是错误的。 -
&&可以短路如果左边是false
标签: swift syntax short-circuiting