在我的模型中,我有这个:
# ....
def total_price(self) do
Enum.reduce(self.child_items, fn(x, acc) ->
x.price + acc
end)
end
它返回一个子项,而不是一个表示总价的数字。为什么会这样以及如何解决?
Enum.reduce
有两个版本:reduce/2
和reduce/3
。接受 2 个参数的那个将集合中的第一个元素作为初始累加器 - 在您的情况下是第一个ChildItem
。
您要做的是自己提供初始成本0
作为累加器:
def total_price(self) do
Enum.reduce(self.child_items, 0, fn(x, acc) ->
x.price + acc
end)
end