“()”代表什么:val f = {()=> x + = 1}

问题描述 投票:2回答:3

我的问题是关于Scala函数:

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

很明显函数文字是否如下所示:

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

()代表什么:

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

我在Scala中很新。我已经读过Scala书中的函数章节,但仍然无法理解()在这里的含义。

scala
3个回答
5
投票

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

你的情况很特别。变量x来自外部范围,并且绑定到您的函数,因此它变为闭包。每次调用f时,它都会改变x的值。

tl; dr它只是函数的空参数列表。


5
投票

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

它类似于

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


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

这不是一个纯粹的功能


2
投票

f() => Unit类型。一个不带参数的函数,什么都不回复(单位)

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

java的等价物是Supplier接口。

© www.soinside.com 2019 - 2024. All rights reserved.