给定以下用于在 Scala 中定义函数的结构,您能解释一下区别是什么,以及会产生什么影响吗?
def foo = {}
对比
def foo() = {}
更新
感谢您的快速回复。这些很棒。留给我的唯一问题是:
如果我省略括号,还有没有办法传递函数?这是我在 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 更新
以下是我注意到的一些类似问题: