我开始学习Scala,并遇到了Programming in Scala教科书中的一小段代码,我不太理解。希望有人能帮助我吗?
这来自于Programming in Scala,第二版的Listing 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)
执行为表达式,而是将其作为函数执行?
// ???
的行。也许你忘记添加了? - Daniel C. Sobral// ???
。 - C0deAttack