我正在寻找一种方法来创建自定义枚举器,以便在sum
枚举器的示例中使用reduce()
多次使用Enumerable
只能总和值不是一个好的解决方案。
nextObject
API表示枚举器必须实现length
方法并具有Ember.Enumerable
属性。但并非所有内置的普查员都有这些。
我尝试重新打开sum
课程,但失败了。
如何基于reduce
(或资源如何创建)创建# custom enumarator I want to have
sum = @get('items').sum(0)
# current solution
sum = @get('items').reduce ((prev, curr) -> prev + curr,) 0
枚举器的示例将是一个很好的帮助。
Em.computed.sum
Ember有{{1}},但我无法将其视为正常的可枚举。
答案 0 :(得分:2)
我认为你混淆枚举函数和可枚举对象。
可枚举的对象必须实现nextObject
和length
。这些是链接列表,队列,堆栈和集合。基本上,您想要迭代的数据结构。
枚举函数可以应用于可枚举对象,例如sum
,min
,max
。
您不应该将此方法添加到Ember.Enumerable,因为并非所有枚举都可以求和。一个数字列表可以,但你如何总结一组水果?
那说,这应该回答你的问题: