Ruby注入方法

时间:2015-02-01 14:18:15

标签: ruby

我正在做一些红宝石练习。在我练习的一个解决方案中,我找到了这段代码。

def make_change(amount)
  { H:50, Q:25, D:10, N:5, P:1 }.inject({}) do |res, (k,v)| 
    change, amount = amount.divmod(v)
    res[k] = change unless change==0
    res
  end
end

此方法将金额作为参数并将金币与其相等。例如:

make_change(75) 
#=> {H:1, Q:1}    

(50 + 25 = 75)

但我不明白change变量的来源。变量是如何填充的?

1 个答案:

答案 0 :(得分:1)

  

但是我不明白“变更”变量来自何处,变量是如何填充的?

change在块的第一行中定义并初始化:

change, amount = amount.divmod(v)