簡體   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