我的问题是关于Scala函数:
var x = 1
val f = {() => x += 1}
很明显函数文字是否如下所示:
val f = (x:Int)=>x+1
但()
代表什么:
val f = {() => x += 1}
我在Scala中很新。我已经读过Scala书中的函数章节,但仍然无法理解()
在这里的含义。
它只是一个空的参数列表。这意味着你没有向函数传递任何参数。所以通常这种函数不会消耗任何值,但会在调用时提供值。
你的情况很特别。变量x
来自外部范围,并且绑定到您的函数,因此它变为闭包。每次调用f
时,它都会改变x
的值。
tl; dr它只是函数的空参数列表。
()
中的val f = {() => x += 1}
表示函数不带参数,x的值增加1
它类似于
var x = 1
def foo(): Unit = {
x += 1
}
val f: () => Unit = () => x += 1
这不是一个纯粹的功能