Scala 什么是;()";代表in:val f={()=>;x+;=1}

Scala 什么是;()";代表in:val f={()=>;x+;=1},scala,Scala,我的问题是关于Scala函数: var x = 1 val f = {() => x += 1} 很明显,如果函数文字看起来像: val f = (x:Int)=>x+1 但是,()代表什么: val f = {() => x += 1} 我在斯卡拉是个新手。 我已经读过Scala书籍中的函数章节,但仍然不明白这里的()是什么意思;dr它只是一个函数的空参数列表 这是一个空的参数列表。这意味着您没有向函数传递任何参数。所以通常这种函数不会消耗任何值,而是在调用时提供值 你

我的问题是关于Scala函数:

var x = 1
val f = {() => x += 1}
很明显,如果函数文字看起来像:

val f = (x:Int)=>x+1
但是,
()
代表什么:

val f = {() => x += 1}
我在斯卡拉是个新手。
我已经读过Scala书籍中的函数章节,但仍然不明白这里的
()
是什么意思;dr它只是一个函数的空参数列表

这是一个空的参数列表。这意味着您没有向函数传递任何参数。所以通常这种函数不会消耗任何值,而是在调用时提供值

你的情况很特殊。变量
x
来自外部作用域,并绑定到函数,因此它成为闭包。每次调用
f
时,它都会更改
x

的值
()
中的
()
值f={()=>x+=1}表示函数不带参数并将x的值增加1

它类似于

var x = 1
def foo(): Unit = {
    x += 1
}


val f: () => Unit = () => x += 1

这不是一个纯函数

f
属于
()=>单元类型
。不带参数且不返回任何内容的函数(单位)


与此类似的java是接口。

代码来自:类C{var acc=0 def minc={acc+=1}val finc={()=>acc+=1}目的是区分方法和函数。在任何情况下,我们需要定义一个参数列表为空的函数吗?很抱歉,我仍在学习如何对代码进行缩进编辑。每当调用函数时,如果您想
提供/产生
某些值,或者您想更改绑定到闭包函数的变量的值,则可以创建函数。请查看有关闭包的内容。Page robot告诉我不要在评论中说感谢。在Stackoverflow中,不要说谢谢,你应该:如果这解决了你的问题,你应该“接受”它并将其标记为有用(+1)
val f: () => Unit = {() => x += 1}