我想知道是否有一种优雅的方法来使用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
红宝石可以吗?
答案 0 :(得分:5)
是的,Rails是可能的。不,你不应该这样做。如果我不得不猜测,我会说这是某种PHP主义。
最好使用哈希:
@days = {
:monday => blah,
:tuesday => brah,
# ...
:friday => blagh
}
然后你可以按照自己的意愿迭代这些。引用其中一个只是稍微打字:@days[:monday]
而不是@monday
。
使用适当的数据结构可以让你操纵它,迭代它,并提供各种机会来彻底测试它。
答案 1 :(得分:2)
是的,这是可能的。我认为它被称为instance_variable_set
并且比使用邪恶的eval
更安全。
但是如果可行,请使用哈希。