我正在尝试以下代码;
(for (f <- (new File(".")).listFiles() if !f.isDirectory) yield f) match {
case x:File => println(x.getAbsoluteFile)
case _ => println(_)
}
显然我错了,因为我收到以下错误
scrutinee is incompatible with pattern type;
found : java.io.File
required: Array[java.io.File]
case x:File => println(x.getAbsoluteFile)
^
我想做的事情非常明显;我试图从for-loop获取每个产生的值并将其传递给匹配大小写的“过滤器”。我没有兴趣编写一个更好的文件树过滤器,而不是知道我得到的错误的原因,以及是否可以修复它(或以其他方式重写)。
干杯!
答案 0 :(得分:2)
只需几个符号:
for (f <- (new File(".")).listFiles() if !f.isDirectory) f match {
case x:File => println(x.getAbsoluteFile)
case _ => println(_)
}
差异是
yield f)
{ f
在您的情况下,您首先处理(逐个|过滤|逐个产生)整个集合,然后才匹配整个结果。