如何定义动态变量并将其分配给rails中的某个值

时间:2015-05-18 10:45:50

标签: ruby-on-rails ruby dynamic-variables

我想创建动态variable并为其分配值。这是我到目前为止尝试的快速示例。

array = %w(this is a test)
array.each_with_index do |c,v|
  puts "variable_#{v}".to_sym
end

这给了我这样的输出:

# variable_0
# variable_1
# variable_2
# variable_3

但是当我尝试分配如下的值时:

array.each_with_index do |c,v|
  puts "variable_#{v}".to_sym = 45 # I want to assign value which will be result of api, here I just pass 45 static
end

这给了我一个错误:

  

未定义的方法`to_sym =' for" variable_0":String(NoMethodError)

如果我删除.to_sym,则会出现类似错误:

  

语法错误,意外' ='

请帮帮我。我怎样才能做到这一点?提前谢谢。

注意:这只是一个示例代码,用于了解如何创建动态变量并为其分配变量。在我的应用程序中,它是一个instance_variable,我想用它们来实现我的目标。

2 个答案:

答案 0 :(得分:1)

考虑到您确实需要动态设置实例变量,instance_variable_set可能对您有帮助。

array.each_with_index do |c,v|
  instance_variable_set "@variable_#{v}".to_sym, 45 # `@` indicates instance variable
end

答案 1 :(得分:1)

您可以在数组或散列中收集结果。很难用部分信息给出例子。但是在数组中,您可以按如下方式收集结果:

result_set = array.collect do |c|
  45
end

哪个会给你

result_set = ["this", "is", "a", "test"]

对于哈希,让我知道你想要收集什么类型的键和值,以便我可以给你一个特定的例子。 我希望这会对你有所帮助。