2009-11-02 73 views
12

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

相關:http://stackoverflow.com/questions/944111/when-to-use-the-equals-sign-in-a-scala-method-declaration – 2013-02-15 00:10:39

回答

16

又見this question and answer上SO:

在Scala中,如果一個方法聲明不具有其身體之前等號時,編譯器推斷出的結果類型將是Unit

基本上聲明無=一個功能是指在函數返回Unit並且編譯器在最後爲您插入()。應該返回一個非Unit值的函數必須=表示法聲明(儘管編譯器當然可以從表達式的類型推斷返回類型)。