Scala 避免for循环中的可变变量

Scala 避免for循环中的可变变量,scala,Scala,我有一些代码如下。但我希望避免使用这个可变变量标志 我怎样才能做到这一点 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 } d

我有一些代码如下。但我希望避免使用这个可变变量标志

我怎样才能做到这一点

  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
  }
defmap(s:Set,f:Int=>Int):Set=(x:Int)=>{
变量标志:布尔值=false

对于(i使用
exists
集合方法。如果集合中至少有一个元素的指定条件为true,则
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)
  }

使用
exists
集合方法。如果集合中至少有一个元素的指定条件为true,则
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)
  }

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

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

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

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

我一点也不知道scala,但我想你可以用while循环而不是for循环。
while(!s(I)| f(I)!=x)
是的,这是一个coursera问题,应该用简单的一行程序来解决,而不是一个循环(这与问题本身无关)。我一点也不知道scala,但我认为你可以使用while循环而不是for循环。
while(!s(I)| f(I)!=x)
是的,这是一个coursera问题,应该用简单的一行程序来解决,而不是一个循环(这与问题本身无关)。虽然我真的不想支持赠送解决方案,但我至少想给出一个指向更好解决方案的指针:关于使用
exists
的提示很好。如果
exists
是按照作业中的要求实现的,它将调用
foreach
,它已经从
-bound
循环到
bound
.TL;DR:a我使用的是一个25字符的解决方案,它不需要额外的迭代,但在传递给
exists
的函数中实现了这个技巧。虽然我真的不想支持分发解决方案,但我至少想给出一个指向更好的解决方案的指针:关于使用
exists
的提示很好。如果
exists
是按req实现的在赋值中,它调用
foreach
,它已经从
-bound
循环到
bound
.TL;DR:目标是一个~25个字符的解决方案,它不需要额外的迭代,但在传递给
的函数中实现了技巧。