【发布时间】:2009-11-02 15:06:38
【问题描述】:
在每种定义 foo 的形式中发生了什么?:
scala> def foo = {1}
foo: Int
scala> foo
res2: Int = 1
但是:
scala> def foo {1}
foo: Unit
scala> foo
scala>
【问题讨论】:
在每种定义 foo 的形式中发生了什么?:
scala> def foo = {1}
foo: Int
scala> foo
res2: Int = 1
但是:
scala> def foo {1}
foo: Unit
scala> foo
scala>
【问题讨论】:
另请参阅 SO:this question and answer:
在 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
【讨论】: