println
- это метод (преобразуемый в функцию), который принимает входные данные (в данном случае String
) и создает результат (Unit
) и побочный эффект (печать в StdOut).
println()
- это вызов метода, который не требует ввода, выдает результат (Unit
) и побочный эффект (\n
до StdOut).
Они не одинаковы.
Второй не будет работать в foreach()
, потому что foreach()
передает элементы (в данном случае строки) в свой аргумент, а println()
не будет принимать входные данные, которые foreach()
передаетit.
Это будет работать str.foreach(_ => println())
, потому что стрелка подчеркивания (_ =>
) говорит: «Игнорируйте ввод. Просто выбросьте его и вызовите то, что следует».