我开始学习 Scala,并且遇到了我不太了解的 Programming in Scala 教科书中的一个片段。希望有人能帮助我吗?
这是来自 Programming in Scala, 2nd Edition 的清单 9.1。
object FileMatcher {
private def filesHere = (new java.io.File(".")).listFiles
}
private def filesMatching(matcher: String => Boolean) =
for (file <- filesHere; if matcher(file.getName)) yield file
def filesEnding(query: String) =
filesMatching(_.endsWith(query)) // ???
def filesContaining(query: String) =
filesMatching(_.contains(query)) // ???
def filesRegex(query: String) =
filesMatching(_.matches(query)) // ???
我对有// ???
. 是否使用_
某种方式创建了一个传递给的匿名函数filesMatching
?还是_
与此无关,而是编译器认为filesMatching
需要一个函数,因此不_.endsWith(query)
作为表达式执行,而是使表达式成为函数?