2

我有一段这样的代码

def filter(t: String) : Boolean = {
    var found = false;
    for(s <- listofStrings) {
      if ( t.contains(s)) { found = true}
    }
    found
  }

编译器会发出警告,指出使用可变变量不是好习惯。我该如何避免这种情况?

免责声明:我在作业中使用了此代码的变体,并且提交已完成。我想知道正确的做法是什么

4

2 回答 2

8

你可以这样做:

def filter(t:String) = listofStrings.exists(t.contains(_))
于 2012-10-12T07:27:13.070 回答
3

如果您要使用尽可能少的内置集合函数,请使用递归:

def filter(t: String, xs: List[String]): Boolean = xs match {
  case Nil => false
  case x :: ys => t.contains(x) || filter(t, ys)
}

println(filter("Brave New World", List("few", "screw", "ew"))) // true

println(filter("Fahrenheit 451", List("20", "30", "80"))) // false
于 2012-10-12T08:01:53.173 回答