使用字符串插值动态创建 Ruby 个变量
Dynamically create Ruby variables with string interpolation
我想做类似的事情:
4.times do |n|
"member#{n}" = Fabricate(:user)
end
调用 member1
、member2
等。会给我用户实例。 #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
等访问它们
回答你的第二个问题是 send
和 eval
在这种情况下没有特别的用途
我想做类似的事情:
4.times do |n|
"member#{n}" = Fabricate(:user)
end
调用 member1
、member2
等。会给我用户实例。 #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
等访问它们
回答你的第二个问题是 send
和 eval
在这种情况下没有特别的用途