Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么Stream.reduce()javadoc调用初始值标识?_Javascript_Java_Java Stream_Lodash_Reduce - Fatal编程技术网

Javascript 为什么Stream.reduce()javadoc调用初始值标识?

Javascript 为什么Stream.reduce()javadoc调用初始值标识?,javascript,java,java-stream,lodash,reduce,Javascript,Java,Java Stream,Lodash,Reduce,我总是有点困惑。它调用初始值Identity 当我阅读文档时,我会更加困惑: 似乎术语是相反的。标识不是初始值,而是每次迭代要调用的函数。累加器是初始值: 集合(数组|对象):要迭代的集合。 [iteratee=..identity](函数):每次迭代调用的函数。 [累加器](*):初始值 JavaScript的文档似乎更简单。它调用初始值:initialValue 初始值被称为Identity以及Lodashreduce()和Javareduce()有这种命名冲突的原因吗?Array.prot

我总是有点困惑。它调用初始值
Identity

当我阅读文档时,我会更加困惑:

似乎术语是相反的。标识不是初始值,而是每次迭代要调用的函数。累加器是初始值:

集合(数组|对象):要迭代的集合。
[iteratee=..identity](函数):每次迭代调用的函数。
[累加器](*):初始值

JavaScript的文档似乎更简单。它调用初始值:
initialValue


初始值被称为
Identity
以及Lodash
reduce()
和Java
reduce()
有这种命名冲突的原因吗?

Array.prototype.reduce()
不支持并行处理,因此该值实际上是单个初始值

Java的
Stream.reduce()
支持并行处理,因此该值可以多次使用,作为每个线程中的初始值,因此必须是中性的,如加0或乘1。这种中性值称为标识值

正如它所说:

在数学中,同一元素,或中性元素,是一个集合中与该集合上的二进制运算有关的一种特殊类型的元素,该集合中的任何元素在与之组合时都保持不变。这个概念用于代数结构,如群和环。当不存在混淆的可能性时,术语identity元素通常被缩短为identity(如加法identity和乘法identity),但identity隐含地依赖于与其相关联的二进制操作


术语很好。它指的是。关于Lodash文档:不,函数不称为“identity”,它称为“iteratee”。“iteratee”函数有一个默认值,即identity函数(一个只返回传递给它的任何内容的函数)。@Jesper确实,我没有注意到这一点。但我仍然有一个黑点。在lodash中,初始值称为累加器。这有什么原因吗?在java中,acculator是为每个元素调用的函数。@MarinosAn acculator是在操作之间传输的名称。一步一步累积结果。Java将该名称用于同时也是操作的双函数。Lodash使用该名称表示应用函数的结果-即您所携带的东西。两者都不是真的错——在这两种情况下,这都与继续操作和转入下一个操作有关。双功能有时也称为减速机或减速机。