scala - "()" 代表什么: 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
.
推荐阅读
- c# - 如果数组的元素超过 10 个,则将数组一分为二 C#
- c++ - 在自定义 Vector 中实现 push_back(T&& c)
班级 - docker - Unraid Nginx 反向代理 GitLab-CE Docker
- c# - 具有模拟延迟的集成测试调用
- gradle - 如何使用 Gradle“平台”在多项目设置中对齐依赖版本?
- spring - 如何根据我们正在运行的作业加载 spring bean。春季批次
- python - 计数时跳过一些值
- java - android studio 根目录和依赖项错误
- php - 如何在测试中覆盖 Laravel Service Container 标记的具体实现?
- flutter - 将图像存储在字符串中