将哈希中的信息插入到迭代中

时间:2015-07-01 19:46:47

标签: ruby

我正在尝试将哈希monthly_multipliers中的信息插入到迭代器中。

month_multipliers = { april: 1, may: 2, june: 3, july: 4, august: 5, september: 6, october: 7, november: 8, december: 9, january: 10, february: 11, march: 12}
months = ['april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december', 'january', 'february', 'march']

然后我每个月都要进行迭代,并且需要每月注入月度乘数,因此6月3日将是5月等。

months.each do |month|
  instance_variable_set :"@#{month}_income", (monthly_new_account_income * month_multipliers[month]) + previous_years_monthly_income
end

此位不起作用

 month_multipliers[month])

我尝试发送并获取实例变量,但无法正确获取格式。

3 个答案:

答案 0 :(得分:1)

month_multipliersSymbol个对象中有密钥,但months的密钥为String个对象。在从哈希值中检索值之前,请使用所有SymbolString个对象或将键转换为正确的对象。

答案 1 :(得分:0)

这有效

 var work = person.Work; \\ with this line here everything works as expected
 person.Work = null;
 db.SaveChanges();

答案 2 :(得分:0)

我看到你的问题,你使用带有字符串值的符号键。为简单起见,您可以直接遍历month_multiplier

month_multipliers.each_pair do |month, multiplier|
  instance_variable_set :"@#{month}_income", (monthly_new_account_income * multiplier) + previous_years_monthly_income
end