【发布时间】:2015-08-15 09:16:10
【问题描述】:
我想做这样的事情:
4.times do |n|
"member#{n}" = Fabricate(:user)
end
调用member1、member2 等会给我用户实例。 #send 或 #eval 对我的情况有用吗?感谢观看。
【问题讨论】:
标签: ruby variables interpolation
我想做这样的事情:
4.times do |n|
"member#{n}" = Fabricate(:user)
end
调用member1、member2 等会给我用户实例。 #send 或 #eval 对我的情况有用吗?感谢观看。
【问题讨论】:
标签: ruby variables interpolation
您不能以这种方式动态设置local variables,因为您实际上要做的是设置String。您的代码解释如下
"member1" = Fabricate(:user)
这将为意外的= 引发SyntaxError,因为您不能将String 设置为任何内容。
但是,您可以使用 instance_variables 执行此操作,如下所示:
4.times do |n|
instance_variable_set("@member#{n}", Fabricate(:user))
end
然后使用@member1、@member2 等访问它们。
回答你的第二个问题是没有 send 和 eval 在这种情况下没有特别的用途
【讨论】: