2015-01-16 52 views
3

是否可以通過遍歷數組來創建多個變量?遍歷數組以在ruby中創建變量

例如,假設我有一個數組稱爲numbers = [1,2,3,4,5],我想創造出一系列number_2變量稱爲number_1,...,number_5各等同於各自指數的數字陣列(例如number_1 = 1number_2 = 2等)。

我試圖沿着以下線的東西:

但是失敗了。本質上,我想迭代過程自動創建和賦值給變量。

謝謝。

+1

爲什麼要這樣做? 'number_1'給你的是'numbers [0]'不是什麼? – ptd

+0

這可能會滿足您的需求:http://stackoverflow.com/q/16419767/2177 – yalestar

+0

謝謝@yalestar,這是有幫助的。 –

回答

2

一種方法是:

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

另一種方法是使用eval方法來創建一個實例變量:

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

預告,eval被認爲是一個有點哈克,並不起作用在JRuby上。 (注意:上面的代碼創建實例變量,而不是範圍級變量(又名局部變量)。例如:代碼創建@number_1而不是number_1。據我所知,Ruby不提供直接動態的方式來動態創建一個範圍級別的變量持續存在;您可以在eval內創建一個,但超出eval的範圍。)

+1

請注意,這不會創建局部變量(似乎已被請求)。沒有辦法以這種方式創建局部變量。 – ptd

+0

@ptd好點,我會補充說。 – joelparkerhenderson

+0

@ptd謝謝你們兩位。這明確澄清。 –