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



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

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

它返回一个子项,而不是一个表示总价的数字。为什么会这样以及如何解决?

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

最新更新