что это значит println (_)? - PullRequest
       35

что это значит println (_)?

0 голосов
/ 20 сентября 2018

У меня есть этот фрагмент кода в scala

val wordCounts = logData.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey((a, b) => a + b)
wordCounts.foreach(println(_))

Так что же означает println (_) и что он должен печатать?

1 Ответ

0 голосов
/ 20 сентября 2018

Как объяснено в разделе «Синтаксис заполнителя для анонимных функций» спецификации ,

println(_)

является сокращением для литерала анонимной функции

w => println(w)

который, в свою очередь, является сокращением для чего-то вроде

(w: (String, Int)) => println(w)

в данном конкретном случае.

Следовательно,

wordCounts.foreach(println(_))

просто печатает каждый элемент wordCounts.

Обратите внимание, что это также может быть написано еще короче:

wordCounts foreach println
...