等于scala中的自由函数定义

时间:2014-07-17 03:23:20

标签: scala function

我已经开始学习Scala并注意到以下两个定义。

def a(m:Int){
    println("-" * m)
}                                         //> a: (m: Int)Unit

使用=

def a(m:Int) = {
    println("-" * m)
}                                         //> a: (m: Int)Unit

可以使用a(2)

调用它们

我注意到第一个函数总是被视为Int =>单元 即使它返回了某些东西。

问题:这两个定义在内部有何不同?

(这可能很愚蠢,但我不知道如何谷歌这个)

1 个答案:

答案 0 :(得分:6)

如果您不等于等号,则返回类型始终为Unit。如果使用等号,则返回类型可以是其他类型。

等于免费的版本被称为"过程"语法(过程是执行某些任务的函数,而不是计算为某个值的表达式)。但是,现在不鼓励使用这种语法,将来不允许使用这种语法;见https://issues.scala-lang.org/browse/SI-7605