我有以下代码:
3.times do |n|
"project#{n}" = FactoryGirl.create(:project, :title => "Project #{n}")
end
这显然不起作用......有谁知道如何制作循环,我可以在其中制作变量名,该变量名将随“局部循环变量”而改变,以制作很多变量,如 project1、project2、projekt3?
我有以下代码:
3.times do |n|
"project#{n}" = FactoryGirl.create(:project, :title => "Project #{n}")
end
这显然不起作用......有谁知道如何制作循环,我可以在其中制作变量名,该变量名将随“局部循环变量”而改变,以制作很多变量,如 project1、project2、projekt3?
你可以使用哈希吗?
project = {}
3.times do |n|
project[n] = FactoryGirl.create(:project, :title => "Project #{n}")
end
project[1]
您可以通过...访问数据
您可以按照 knut 的建议使用哈希,也可以使用数组——因为您从 0 开始并连续向上移动。
project = Array.new(3)
3.times do |n|
project[n] = FactoryGirl.create(:project, :title => "Project#{n}")
end
或者,更简单地说:
project = []
3.times do |n|
project << FactoryGirl.create(:project, :title => "Project#{n}")
end
这提供了你在问什么的错觉......
eigenclass = class << self; self; end
3.times do |n|
eigenclass.class_eval { attr_accessor "project#{n}" }
eval "self.project#{n} = FactoryGirl.create(:project, :title => \"Project #{n}\")"
end
但请不要这样做。它实际上是在 上创建一个属性访问器Kernel
,每个n
.
这是我的参考。