[英]What does “()” stand for in: val f = {() => x += 1}
我的问题是关于Scala函数:
var x = 1
val f = {() => x += 1}
很明显,函数文字是否像这样:
val f = (x:Int)=>x+1
但是()
代表什么:
val f = {() => x += 1}
我在Scala中很陌生。 我已经读完了一本Scala书中的功能一章,但仍然无法理解()
在这里的含义。
tl; dr这只是一个函数的空参数列表。
这是一个空的参数列表。 这意味着您没有将任何参数传递给该函数。 因此,通常这种函数不会消耗任何值,但是会在调用时提供值。
你的情况很特别。 变量x
来自外部作用域并绑定到您的函数,因此它成为闭包。 每次调用f
都会改变x
的值。
在()
中的val f = {() => x += 1}
表示的函数由1采取x的任何参数,增加值
它类似于
var x = 1
def foo(): Unit = {
x += 1
}
val f: () => Unit = () => x += 1
这不是一个纯粹的功能
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.