scala:';def foo={1}';vs';def foo{1}';
在定义foo的每种形式中都发生了什么scala:';def foo={1}';vs';def foo{1}';,scala,methods,Scala,Methods,在定义foo的每种形式中都发生了什么 scala> def foo = {1} foo: Int scala> foo res2: Int = 1 但是: 在以下内容中找到: 另见下文: 在Scala中,如果方法声明的正文前没有等号,编译器将推断结果类型为Unit 基本上,声明一个没有=的函数意味着该函数返回单元,编译器在最后为您插入一个()。应该返回非单位值的函数必须用=符号声明(当然编译器可以从表达式的类型推断返回类型)。相关: scala> def foo {1} f
scala> def foo = {1}
foo: Int
scala> foo
res2: Int = 1
但是:
在以下内容中找到:
另见下文:
在Scala中,如果方法声明的正文前没有等号,编译器将推断结果类型为Unit
基本上,声明一个没有=
的函数意味着该函数返回单元
,编译器在最后为您插入一个()
。应该返回非单位值的函数必须用=
符号声明(当然编译器可以从表达式的类型推断返回类型)。相关:
scala> def foo {1}
foo: Unit
scala> foo
scala>
//[bad!]
def f(x: Int) { x*x } //hidden error: without = it's a Unit-returning proc; causes havoc