如何在迭代中设置ruby实例名称

时间:2015-07-01 19:25:28

标签: ruby

我正在尝试用红宝石做点什么。

我有一年中的几个月就像这样。

months = ['april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december', 'january', 'february', 'march']

然后我定义了一个名为Month的类,它看起来像这样......

class Month
  attr_accessor :name, :accounts, :income
  def initialize(name, accounts, income)  
    # Instance variables  
    @name = name  
    @accounts = accounts
    @income = income  
  end  
end

现在我尝试使用像这样的迭代器创建12个Month类的实例

months.each do |month|
  xxx = Month.new(month, 50, 1000)
end

我正在努力的是xxx。我希望这是月份的名称,所以我最终能够做到4月.cacounts,may.income等。无论我尝试什么,我似乎无法弄明白?

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

使用此instance_variable_set方法。

months.each do |month|
  instance_variable_set :"@#{month}", Month.new(month, 50, 1000)
end