什么是在每一种形式限定FOO ?:阶: 'DEF富= {1}' VS 'DEF FOO {1}'
scala> def foo = {1}
foo: Int
scala> foo
res2: Int = 1
的事情,但:
scala> def foo {1}
foo: Unit
scala> foo
scala>
什么是在每一种形式限定FOO ?:阶: 'DEF富= {1}' VS 'DEF FOO {1}'
scala> def foo = {1}
foo: Int
scala> foo
res2: Int = 1
的事情,但:
scala> def foo {1}
foo: Unit
scala> foo
scala>
又见this question and answer上SO:
在Scala中,如果一个方法声明不具有其身体之前等号时,编译器推断出的结果类型将是
Unit
基本上声明无=
一个功能是指在函数返回Unit
并且编译器在最后为您插入()
。应该返回一个非Unit
值的函数必须用=
表示法声明(尽管编译器当然可以从表达式的类型推断返回类型)。
发现这http://anyall.org/scalacheat/:
//[bad!]
def f(x: Int) { x*x } //hidden error: without = it's a Unit-returning proc; causes havoc
相关:http://stackoverflow.com/questions/944111/when-to-use-the-equals-sign-in-a-scala-method-declaration – 2013-02-15 00:10:39