用循环创建多个变量?

Jas*_*Kim 2 ruby

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

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

def workhours
  @monday = blah
  @tuesday = brah
  @wednesday = bro
  @thursday = blap
  @friday = blagh
end
Run Code Online (Sandbox Code Playgroud)

我希望能做什么

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

  days.each do |smack|
    @"smack" = whatever
  end
end
Run Code Online (Sandbox Code Playgroud)

红宝石可以吗?

tad*_*man 5

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

什么是更好的是使用哈希:

@days = {
  :monday => blah,
  :tuesday => brah,
  # ...
  :friday => blagh
}
Run Code Online (Sandbox Code Playgroud)

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

使用适当的数据结构允许您操纵它,迭代它,并提供各种机会来彻底测试它.