我有一段这样的代码
def filter(t: String) : Boolean = {
var found = false;
for(s <- listofStrings) {
if ( t.contains(s)) { found = true}
}
found
}
编译器会发出警告,指出使用可变变量不是好习惯。我该如何避免这种情况?
免责声明:我在作业中使用了此代码的变体,并且提交已完成。我想知道正确的做法是什么
你可以这样做:
def filter(t:String) = listofStrings.exists(t.contains(_))
如果您要使用尽可能少的内置集合函数,请使用递归:
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