Scala中的迭代器值与vals

时间:2016-09-10 11:22:35

标签: scala iterator

我不明白这种行为。我想检查一个值是否在网格上创建的圆圈中(作为数组)。定义圆圈的两边..

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

这里有什么不同......?

1 个答案:

答案 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