2013-10-07 58 views
0

即時嘗試優化我的代碼儘可能多,我已經到了死衚衕。組織我的數組ruby

我的代碼如下所示:

class Person 
    attr_accessor :age 
    def initialize(age) 
    @age = age 
    end 
end 

people = [Person.new(10), Person.new(20), Person.new(30)] 

newperson1 = [Person.new(10)] 
newperson2 = [Person.new(20)] 
newperson3 = [Person.new(30)] 

有沒有辦法在那裏我能得到紅寶石自動提取數據出來,從人民陣列,並將它們命名爲以下newperson1等..

最好的問候

+0

你爲什麼想要?只需從陣列中使用它們即可。或者用「newperson」鍵+索引創建一個散列。 –

+0

對於ruby來說我還是個新手,正如我所說的試圖優化我的代碼。你可以舉一個例子,在這個例子中使用散列 – Frederik

+0

如果你有一個東西的集合,使用它的最佳方式是作爲一個集合,而不是抽出單獨的變量。這不太可能是一個優化。如果你想要的是能夠爲每個項目有一個標識符,那麼散列可能是一個好方法。對於如何做到這一點,看看sawa的例子,但不是使用綁定來設置局部變量,而是首先創建一個散列'myhash = {}',然後執行'myhash [「newperson#{1}」] = person'。 –

回答

0

這絕對是一種代碼味道。你應該將它們稱爲[people[0]][people[1]],...。

但是,如果你堅持這樣做,如果你能等到12月25日(紅寶石2.1),那麼你可以做:

people.each.with_index(1) do |person, i| 
    binding.local_variable_set("newperson#{i}", [person]) 
end 
+0

人[0]和那個。正是我需要感謝你。 – Frederik

-1

我想這是你想要做什麼..

newperson1 = people[0] 
puts newperson1.age 

如預期的那樣輸出10