1
3
这绝对不是语言不可知论者(如标签所示)。 例如,在Ruby中,您将向.each方法传递一个闭包或块。语义由语言定义。 在C中,foreach编译为对ienumerable.getEnumerator的调用以及ienumerator.moveNext方法的使用。这取决于语言。 编辑:
不,您只考虑一个用于关闭的用例。不能将控制结构传递给方法,因为在某些语言中可以使用闭包。控制结构不是第一类第一类数据类型,就像某些语言中的闭包一样。在“对集合中的每个对象运行此代码”的情况下,它们在语义上是相似的。但是,它只是一个示例,说明您可以对一个闭包做什么。 你说你 |
2
1
正如斯旺格伦所说,这个问题并不是语言不可知论的标签。除非有一些我不知道的关于“块”的一般“IT理论”定义。 在Java中,“块”是包含在{}中的一系列语句。所以for语句通常在一个块上操作。块的目的是界定某些语言结构中包含的内容,如if语句和循环。 我相信C和C++对“块”有类似的定义。 大多数语言都有类似的概念。 不确定这是否有帮助。 |
3
0
不,对不起,
|
4
0
请详细说明。我对“块”的定义是一段分组在一起的代码。在这种情况下,爪哇有很多东西可以是“块”。
如果你谈论的是Ruby风格的块,这是真正的闭包,那么Java不支持它们(无论如何都不是任何明智的方式)。
关于您更新后的问题:使用闭包作为控制结构很容易,但是如果不是不可能的话,另一种方法就更难了。闭包是一个第一类函数,它允许您用它做一些非常酷的事情,而不仅仅是遍历元素。 |
Abhijit Sarkar · 如何修复“闭包可能比当前函数更有效” 2 年前 |
Houman · 如果未调用闭包,如何使XCTest失败? 6 年前 |
Kapil_A · 如何将swift中使用的闭包写入目标c? 6 年前 |
Xendar · Jenkins管道模拟Groovy 6 年前 |
Ibrahim Mohammed · 函数不考虑闭包 6 年前 |