2009-11-02 24 views
12

lo que está pasando en cada una de estas formas de definir foo ?:Scala: 'foo def = {1}' vs 'foo def {1}'

scala> def foo = {1} 
foo: Int 

scala> foo 
res2: Int = 1 

Pero:

scala> def foo {1} 
foo: Unit 

scala> foo 

scala> 
+0

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

Respuesta

16

Ver también this question and answer en SO:

En Scala si una declaración de método no tiene un signo igual antes de su cuerpo, el compilador infiere que el tipo de resultado seráUnit

Básicamente declarar una función sin = significa que la función devuelve Unit y el compilador inserta un () para usted al final. Una función que debe devolver un valor no Unitdebe declararse con la notación = (aunque, por supuesto, el compilador puede inferir el tipo de devolución del tipo de expresión).

Cuestiones relacionadas