繁体   English   中英

迭代数组以在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。

(警告:上面的代码创建实例变量,而不是作用域级变量(也就是局部变量)。示例:代码创建@number_1而不是number_1 。据我所知,Ruby不提供动态创建范围的简单方法-level变量持久存在;您可以在eval创建一个但它超出eval的范围。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM