什麼是在每一種形式限定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