私はScalaを学び始めています。私はそれほど理解していないScalaのProgramming textbookのスニペットを見てきました。誰かが私を助けることを望んでいたのですか?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)
を実行せず、その式を関数にしますか?
上記の '// ???'の行はありません。あなたはそれらを追加するのを忘れたのでしょうか? –
申し訳ありませんが、 '//???'を今追加しました。 – C0deAttack
[Scala \ _プレースホルダ(このコードはどのように機能しますか?)]の複製が可能です(http://stackoverflow.com/questions/6880407/scala-placeholders-how-does-this-code-function) –