2009-11-02 13 views
12

, co dzieje się w każdym z tych form definiowania foo ?:scala: 'def foo = {1}' vs 'def foo {1}'

scala> def foo = {1} 
foo: Int 

scala> foo 
res2: Int = 1 

Ale:

scala> def foo {1} 
foo: Unit 

scala> foo 

scala> 
+0

Powiązane: http://stackoverflow.com/questions/944111/when-to-use-the-equals-sign-in-a-scala-method-declaration –

Odpowiedz

16

Zobacz także this question and answer na SO:

W Scali czy deklaracja metoda nie posiada znak równości przed jego ciała, kompilator wnioskuje, że typ wynik będzieUnit

Zasadniczo deklarowania funkcji bez = oznacza, że ​​powroty funkcyjnych Unit i kompilator wstawia na koniec (). Funkcja, która powinna zwracać wartość inną niż Unitmusi być zadeklarowana jako z notacją = (chociaż oczywiście kompilator może wywnioskować typ zwracany z typu wyrażenia).

Powiązane problemy