0
我不明白這種行爲。我想檢查一個值是否在網格上創建的圓圈上(作爲數組)。定義圓的兩側..Scala中的迭代器值與vals緩存值
val circleLeft = Vector(5,14,23..)
val circleRight = Vector(5,16,27,..)
我在檢查下面的函數這個條件。 與第一個:
def insideCircle(idx: Int): Boolean = {
val l = circleLeft.toIterator
val r = circleRight.toIterator
while (l.hasNext && r.hasNext) {
if(idx < r.next && idx > l.next) return true
}
return false
}
它返回總是如此。有了這個第二個
def insideCircle(idx: Int): Boolean = {
val l = circleLeft.toIterator
val r = circleRight.toIterator
while (l.hasNext && r.hasNext) {
val x1 = r.next
val x2 = l.next
println(x2,x1)
if(idx < x1 && idx > x2) return true
}
return false
}
它可以正常工作,即insideCircle(15)=真,insideCircle(17)= FALSE
有什麼不同這裏..?
所以,使其AND條件我應該關閉括號之間的兩個條件?編輯: 美麗,謝謝! – LowFieldTheory
不知道我理解你的問題,你需要在調用'&&'之前_evaluate_和'.next's。比較'{println(「left」); false} && {println(「right」); true}'和'{println(「left」); false}&{println(「right」);真正的''('&'不是短路方法) –
「你需要在調用&&前先評估兩個.nexts」現在我明白了,ok – LowFieldTheory