Рассмотрим следующую последовательность.
Анонимная функция от String
до String
.
scala> (_: String) + "sd"
res0: String => String = $$Lambda$1156/0x00000008406c1040@6b8bdcc6
Печать String
представления анонимной функции.
scala> println((_: String) + "sd")
$line10.$read$$iw$$iw$$$Lambda$1158/0x00000008406c3040@31f5b923
Печать String
представления анонимной функции. Сохраните результат в переменной b
.
scala> val b = println((_: String) + "sd")
$line11.$read$$iw$$iw$$$Lambda$1159/0x00000008406a7040@173cfb01
b: Unit = ()
Переданный параметр print()
и println()
является вызовом по ссылке, а не вызовом по имени, поэтому он полностью оценивается при вызове сайт перед передачей на print()
. В этом случае print()
получает функцию, она не становится частью более крупной функции.