Это решит проблему:
def main(args: Array[String]) {
def f1 = println("aprintln")
println("applying f1")
(f1 _).apply
println("done applying f1")
}
И так будет:
def main(args: Array[String]) {
def f1 = "aprintln"
println("applying f1")
println((f1 _).apply)
println("done applying f1")
}
Здесь происходит то, что вы выполняете функцию f1
с вызовом apply
. Функция f1
печатает 'aprintln' и возвращает ()
. Затем вы передаете вывод f1
, который равен ()
, другому вызову println
. Вот почему вы видите дополнительную пару паранов на консоли.
Пустые скобки имеют тип Unit в Scala, что эквивалентно void в Java.