[英]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.