我的问题是关于Scala函数:
var x = 1
val f = {() => x += 1}
很明显,函数文字是否像这样:
val f = (x:Int)=>x+1
但是()
代表什么:
val f = {() => x += 1}
我在Scala中还很陌生。
我已经读完了一本Scala书中的功能一章,但是仍然无法理解()
在这里的含义。
答案 0 :(得分:5)
这只是一个空的参数列表。这意味着您没有将任何参数传递给该函数。因此,通常该函数不会消费任何值,但是在调用时会供应值。
您的情况很特殊。变量x
来自外部范围,并绑定到您的函数,因此它成为闭包。每次调用f
都会更改x
的值。
tl; dr 这只是函数的空参数列表。
答案 1 :(得分:5)
()
中的val f = {() => x += 1}
表示该函数不接受参数,并且x的值增加1
它类似于
var x = 1
def foo(): Unit = {
x += 1
}
val f: () => Unit = () => x += 1
这不是一个纯函数
答案 2 :(得分:2)