私はScalaを学び始めており、Programming inScalaの教科書の抜粋に出くわしましたが、よくわかりません。誰かが私を助けることができることを望んでいましたか?
これは、Scala、2ndEditionでのプログラミングのリスト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)
されず、代わりに式を関数にしますか?