injectGroovy 中的方法实际上做了什么?我用谷歌搜索,并没有找到确切的答案.任何人都可以通过一个简单的例子来指定它
ata*_*lor 65
它将操作应用于集合并跟踪中间值.举个例子:[1, 2, 3, 4].inject(0, { sum, value -> sum + value }).这表示使用0作为初始值,并将加法运算应用于中间结果和每个元素的顺序.操作的每个应用程序都会生成一个新的中间结果.在这种情况下,闭包会将数字相加,因此它会生成列表的总和.你可以想象它像:
<initial value> <operation> <element1> <operation> ... <elementn>
Run Code Online (Sandbox Code Playgroud)
或者,在以下情况下[1, 2, 3, 4].inject(0, { sum, value -> sum + value }):
0 + 1 + 2 + 3 + 4
Run Code Online (Sandbox Code Playgroud)
要查找列表的产品,您可以使用[1, 2, 3, 4].inject(1, { product, value -> product * value}).在这种情况下,1用作初始值,因为它是多重复制的标识值.
这是一个将多字符串列表拆分为单词平面列表的示例:
strings = ["", "this", "is a", "test of inject!"]
words = strings.inject([], { list, value -> list + value.tokenize() })
assert words == ["this", "is", "a", "test", "of", "inject!"]
Run Code Online (Sandbox Code Playgroud)
有时用于描述此操作的其他术语是"reduce",如MapReduce,或"fold"(特别是foldl).
| 归档时间: |
|
| 查看次数: |
15176 次 |
| 最近记录: |