我已经开始学习Scala并注意到以下两个定义.
def a(m:Int){
println("-" * m)
} //> a: (m: Int)Unit
Run Code Online (Sandbox Code Playgroud)
与 =
def a(m:Int) = {
println("-" * m)
} //> a: (m: Int)Unit
Run Code Online (Sandbox Code Playgroud)
两者都可以使用 a(2)
我注意到第一个函数总是被视为Int => Unit,即使它返回一些东西.
问题:这两个定义在内部有何不同?
(这可能很傻,但我不知道如何谷歌这个)
如果省略等号,则返回类型始终为Unit.如果使用等号,则返回类型可以是其他类型.
无等版本被称为"过程"语法(过程是执行某些任务的函数,而不是计算为某个值的表达式).但是,现在不鼓励使用这种语法,将来不允许使用这种语法; 请参阅https://issues.scala-lang.org/browse/SI-7605.