避免for循环中的可变变量

时间:2012-09-27 07:15:02

标签: scala

我有一些代码,如下所示。但我希望避免这个可变变量 flag

我怎样才能做到这一点?

  def map(s: Set, f: Int => Int): Set = (x: Int) =>  {
    var flag : Boolean = false
    for(i <- -bound to bound) {
      if(s(i) && f(i) == x){
        flag = true
      }
    }
    flag
  }

2 个答案:

答案 0 :(得分:5)

我认为你需要这个简单的测试:

(-bound to bound) exists {i => s(i) && f(i) == x}

答案 1 :(得分:3)

使用exists收集方法。如果指定条件对于集合中的至少一个元素为真,则exists方法返回true,否则返回false

def map(s: Set[Int], f: Int => Int): (Int => Boolean) =
  (x: Int) => {
    (-bound to bound).exists(i => s(i) && f(i) == x)
  }