用循环创建多个变量?

时间:2012-01-04 20:52:26

标签: ruby

我想知道是否有一种优雅的方法来使用ruby中的循环创建变量?

说我想把它放在某种循环中

def workhours
  @monday = blah
  @tuesday = brah
  @wednesday = bro
  @thursday = blap
  @friday = blagh
end

我希望能够做什么

def workhour_ideally
  days = [ "monday", "tuesday", "wednesday", "thursday", "friday" ]

  days.each do |smack|
    @"smack" = whatever
  end
end

红宝石可以吗?

2 个答案:

答案 0 :(得分:5)

是的,Rails是可能的。不,你不应该这样做。如果我不得不猜测,我会说这是某种PHP主义。

最好使用哈希:

@days = {
  :monday => blah,
  :tuesday => brah,
  # ...
  :friday => blagh
}

然后你可以按照自己的意愿迭代这些。引用其中一个只是稍微打字:@days[:monday]而不是@monday

使用适当的数据结构可以让你操纵它,迭代它,并提供各种机会来彻底测试它。

答案 1 :(得分:2)

是的,这是可能的。我认为它被称为instance_variable_set并且比使用邪恶的eval更安全。

但是如果可行,请使用哈希。