使用字符串插值动态创建 Ruby 个变量

Dynamically create Ruby variables with string interpolation

我想做类似的事情:

4.times do |n|
  "member#{n}" = Fabricate(:user)
end

调用 member1member2 等。会给我用户实例。 #send 或#eval 对我的情况有用吗?感谢观看。

您不能以这种方式动态设置 local variables,因为您实际尝试做的是设置 String。你的代码解释如下

"member1" = Fabricate(:user)

这将引发 SyntaxError 意外 = 因为你不能将 String 设置为任何东西。

然而,您可以使用 instance_variables 执行此操作,如下所示:

4.times do |n|
  instance_variable_set("@member#{n}", Fabricate(:user))
end

然后使用 @member1@member2 等访问它们

回答你的第二个问题是 sendeval 在这种情况下没有特别的用途