Enum.reduce返回模型而不是数字

时间:2017-01-30 11:22:05

标签: elixir phoenix-framework ecto

在我的模型中,我有这个:

  # ....
  def total_price(self) do
    Enum.reduce(self.child_items, fn(x, acc) ->
      x.price + acc
    end)
  end

它返回一个ChildItem而不是一个代表总价的数字。为什么这样以及如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

Enum.reduce有两个版本:reduce/2reduce/3。采用2个参数的那个将集合中的第一个元素作为初始累加器 - 在您的情况下是第一个ChildItem

您要做的是自己提供初始费用0作为累加器:

  def total_price(self) do
    Enum.reduce(self.child_items, 0, fn(x, acc) ->
      x.price + acc
    end)
  end