2009-11-02 71 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值的函数必须=表示法声明(尽管编译器当然可以从表达式的类型推断返回类型)。