标签: elixir phoenix-framework ecto
在我的模型中,我有这个:
# .... def total_price(self) do Enum.reduce(self.child_items, fn(x, acc) -> x.price + acc end) end
它返回一个ChildItem而不是一个代表总价的数字。为什么这样以及如何解决这个问题?
答案 0 :(得分:2)
Enum.reduce有两个版本:reduce/2和reduce/3。采用2个参数的那个将集合中的第一个元素作为初始累加器 - 在您的情况下是第一个ChildItem。
Enum.reduce
reduce/2
reduce/3
ChildItem
您要做的是自己提供初始费用0作为累加器:
0
def total_price(self) do Enum.reduce(self.child_items, 0, fn(x, acc) -> x.price + acc end) end