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
以及Lodashreduce()
和Javareduce()
有这种命名冲突的原因吗?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使用该名称表示应用函数的结果-即您所携带的东西。两者都不是真的错——在这两种情况下,这都与继续操作和转入下一个操作有关。双功能有时也称为减速机或减速机。