[英]Iterating over an array to create variables in ruby
是否可以通过迭代数组来创建多个变量?
例如,假设我有称为阵列numbers = [1,2,3,4,5]
和我想创造一系列变量称为number_1
, number_2
,..., number_5
各等于中的数字各自的索引数组(例如number_1 = 1
, number_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.