scala - : val f = {() => x += 1}中的 "()"代表什么

标签 scala

我的问题是关于 Scala 函数的:

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

如果函数字面量看起来像这样就很清楚了:

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

但是 () 代表什么:

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

我是 Scala 的新手。 我已经把Scala的书里的函数章节都看了一遍,还是不明白这里的()是什么意思。

最佳答案

tl;dr 这只是一个函数的空参数列表。

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

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

关于scala - : val f = {() => x += 1}中的 "()"代表什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55722686/

相关文章:

scala - 理解这个然后举个例子

scala - 可以使用 actor 'threadless' 在 Scala 中制作生产者/消费者对象(没有接收...)?

scala - 如何将响应主体字段传递给其他请求的主体(Gatling)

scala - 如何按其他列表的排序顺序对 Scala 对象列表进行排序?

scala - Scala 模板中的 HTML 属性

scala - "coalgebra"在编程上下文中是什么意思?

scala - 案例类到无形通用转换

scala - 将 scala 应用程序部署为 docker 容器

java - scala.MatchError : in Dataframes

scala - Spark 不会在 map 函数内的控制台上打印输出