我不明白这种行为。我想检查一个值是否在网格上创建的圆圈中(作为数组)。定义圆圈的两边..
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
}
它总是返回true。有了这第二个
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)= true,insideCircle(17)= false
这里有什么不同......?
答案 0 :(得分:4)
ProgressBar progressBar = (ProgressBar) findViewById(R.id.pb_listProgressBar);
int colorCodeDark = Color.parseColor("#F44336");
progressBar.setIndeterminateTintList(ColorStateList.valueOf(colorCodeDark));
称为短路方法(在Scala中使用by-name参数实现)。在您的第一个示例中,&&
仅在l.next
时执行。在第二个示例中,idx < r.next
始终执行。
<强>更新强>
我会建议更多功能性方法:
l.next