Scala过程和函数差异
我正在学习Scala并在下面运行代码。我知道Scala中不返回任何内容的函数是过程,但在下面运行代码时,为什么会有额外的()输出。在此过程中,我只是打印“value”的值。 有人能解释一下吗Scala过程和函数差异,scala,Scala,我正在学习Scala并在下面运行代码。我知道Scala中不返回任何内容的函数是过程,但在下面运行代码时,为什么会有额外的()输出。在此过程中,我只是打印“value”的值。 有人能解释一下吗 class Sample{ private var value = 1 def test() {value += 2; println(value)} def test2() = value } object Main2 extends App { val my_counter = n
class Sample{
private var value = 1
def test() {value += 2; println(value)}
def test2() = value
}
object Main2 extends App {
val my_counter = new Sample()
println(my_counter.test())
println(my_counter.test2())
}
3
()
3
所谓的“过程语法”只是返回Unit
的方法的“语法糖”(在Java中称之为void
)
在语义上等同于(并实际翻译为):
注意显式类型和方法签名后面的等号
类型单元
有一个单独的值,该值被写入()
(并且读取单元,就像它的类型一样)。这就是您看到的:方法test
打印值
,然后生成()
类型的单元
,然后在屏幕上打印
如注释中所述,“过程语法”已被弃用。过程语法编译为返回单位的方法 调用
单元上的字符串
产生“()”
您正在打印测试结果(即
Unit
),以便在输出中看到它的字符串表示形式,()
。第一个已弃用。
def sayHello(toWhom: String) {
println(s"hello $toWhom")
}
def sayHello(toWhom: String): Unit = {
println(s"hello $toWhom")
}