2016-07-12 66 views
1

的第一個元素的名稱創建數組我有一個數組需要新的陣列

a=["ncd",0.1,0.2,0.3.0.4] 

現在,我可以創建名片的名義陣列時不聲明變量,例如,另一個數組有NCD的名稱要創建像

ncd=[0.1,0.2,0.3.0.4] 

但如上圖所示,我需要從數組中彈出元素,需要創建一個數組,

我不會做這種靜態

對於e xample,我需要使用[0]創建數組,這在Ruby中可能嗎?

+0

? 'a = {「ncd」=> [0.1,0.2,0.3.0.4]}'。然後你可以做''['ncd']' – Aleksey

+0

這個想法剛剛出現在我的腦海中,而且你已經寫下了,謝謝。 – Gopal

+0

或者您可以使用實例變量 –

回答

3

我建議你有一個哈希

a = { "ncd" => [0.1,0.2,0.3.0.4] } 

或者,如果你有數組的一些陣列這樣

a = [['ncd1', 0.1,0.2,0.3,0.4], ['ncd2', 0.1,0.2,0.3,0.4]] 

你可以使用一些方法來獲取動態值

def dynamic(ar) 
    ar.each_with_object({}) do |el, hash| 
    hash[el.first] = el[1..-1] 
    end 
end 

dynamic a 
#=> {"ncd1"=>[0.1, 0.2, 0.3, 0.4], "ncd2"=>[0.1, 0.2, 0.3, 0.4]} 

然後

dynamic(a)['ncd1'] 
#=> [0.1, 0.2, 0.3, 0.4] 

但是,這看起來像在紅寶石中的某種醜陋的語法。

更新1

也許這將是通過鍵作爲第二個參數不太難看,即

def dynamic(ar, key) 
    ar.each_with_object({}) do |el, hash| 
    hash[el.first] = el[1..-1] 
    end[key] 
end 

dynamic a, 'ncd1' 

它是由你來決定。

更新2

我忘了...
你爲什麼不有一個哈希你可以做的,而不是el.drop(1)el[1..-1]

+0

非常好,謝謝,我接受了你的回答。 – Gopal