Учитывая следующие конструкции для определения функции в Scala, можете ли вы объяснить, в чем состоит разница, и каковы будут последствия?
def foo = {}
против.
def foo() = {}
Update
Спасибо за быстрые ответы. Это здорово. Единственный вопрос, который остается для меня:
Если я опускаю скобку, есть ли способ передать функцию вокруг? Это то, что я получаю в repl:
scala> def foo = {}
foo: Unit
scala> def baz() = {}
baz: ()Unit
scala> def test(arg: () => Unit) = { arg }
test: (arg: () => Unit)() => Unit
scala> test(foo)
<console>:10: error: type mismatch;
found : Unit
required: () => Unit
test(foo)
^
scala> test(baz)
res1: () => Unit = <function0>
Обновление 2012-09-14
Вот некоторые похожие вопросы, которые я заметил: