遍历数组以在 ruby 中创建变量

Iterating over an array to create variables in ruby

是否可以通过遍历数组来创建多个变量?

例如,假设我有一个名为 numbers = [1,2,3,4,5] 的数组,我想创建一系列名为 number_1number_2、...、number_5 的变量每个都等于它们在数字数组中的相应索引(例如 number_1 = 1number_2 = 2 等)。

我尝试了以下方法:

numbers.each_with_index do |num, index|
  number_"#{index+1}" = num
end

但是那失败了。

本质上,我希望迭代过程能够自动为变量创建和赋值。

谢谢。

一种方法是:

instance_variable_set("@number_#{index+1}", num)

另一种方法是使用eval方法创建一个实例变量:

eval "@number_#{index+1} = #{num}"

请注意 eval 被认为有点 hacky,不适用于 JRuby。

(注意:上面的代码创建实例变量,而不是范围级变量(a.k.a。局部变量)。示例:代码创建 @number_1 而不是 number_1。到目前为止据我所知,Ruby 没有提供一种直接的方法来动态创建持续存在的范围级变量;您可以在 eval 中创建一个,但它超出了 [=12= 的范围].)