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>
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>
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 Unit
debe declararse con la notación =
(aunque, por supuesto, el compilador puede inferir el tipo de devolución del tipo de expresión).
encontraron esta en http://anyall.org/scalacheat/:
//[bad!]
def f(x: Int) { x*x } //hidden error: without = it's a Unit-returning proc; causes havoc
Relacionados: http://stackoverflow.com/questions/944111/when-to-use-the-equals-sign-in-a-scala-method-declaration –