스칼라를 배우기 시작했는데 스칼라에서 프로그래밍 스칼라 교과서의 스 니펫을 보았습니다. 어떤 사람이 나를 도울 수 있기를 바랬습니까?스칼라 이해하기 : 인자를 함수로 전달하기
이것은 Programming in Scala, 2nd Edition의 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)
을 실행하지 않고 대신 표현식을 함수로 만듭니다.
위의 '// ???'가있는 행이 없습니다. 그것들을 잊어 버린 것일까 요? –
죄송합니다. 지금 '//???'을 추가했습니다. – C0deAttack
[Scala \ _ 자리 표시 자 (이 코드는 어떻게 작동합니까?)] 가능한 복제본] (http://stackoverflow.com/questions/6880407/scala-placeholders-how-does-this-code-function) –