“()”在以下含义:val f = {()=> x + = 1}

时间:2019-04-17 07:59:34

标签: scala

我的问题是关于Scala函数:

var x = 1
val f = {() => x += 1}

很明显,函数文字是否像这样:

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

但是()代表什么:

val f = {() => x += 1}

我在Scala中还很陌生。 我已经读完了一本Scala书中的功能一章,但是仍然无法理解()在这里的含义。

3 个答案:

答案 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)

f的类型为() => Unit。一个不带参数且不返回任何值的函数(单元)

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

相当于Java的是Supplier接口。