scala: 'def foo = {1}' против 'def foo {1}'

что происходит в каждой из этих форм определения foo?

scala> def foo = {1}
foo: Int

scala> foo
res2: Int = 1

Но:

scala> def foo {1}
foo: Unit

scala> foo

scala>
 Mechanical snail15 февр. 2013 г., 01:10

Ответы на вопрос(2)

Решение Вопроса

этот вопрос и ответ на ТАК:

В 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 

Ваш ответ на вопрос