2012-12-05 27 views
0

有沒有一種方法可以凝結成凝結成一行的行,用於檢查數組是否存在並創建並清空一個,以及將新元素推入它?將一個元素添加到可能不存在的數組中的一個襯墊

hash = {} 
(('a'..'z').to_a+('a'..'z').to_a).shuffle.each do |e| 
    hash[:"#{e}"] ||= [] 
    hash[:"#{e}"] << rand(10) 
end 

我期待更多的東西風格的「|| =」,但對於「< <」操作數 感謝您的幫助

+0

我無法解析ÿ我們的問題。 – sawa

+0

我檢查了代碼,它是有效的。不知道什麼可能是錯的。我使用的是紅寶石1.9.3 – thebugfinder

回答

1
(hash[e.to_sym] ||= []) << rand(10) 
+0

這正是我正在尋找的。還要感謝關於將字符串轉換爲符號 – thebugfinder

1

您可以定義不同的哈希值代替:

hash = Hash.new {|h, k| h[k] = []} 
(('a'..'z').to_a+('a'..'z').to_a).shuffle.each do |e| 
    hash[:"#{e}"] << rand(10) 
end 
+1

這個工作,但有一些奇怪的副作用。 – pguardiario

+0

@pguardiario請你詳細說明一下嗎? – thebugfinder

+1

例如,您可能錯誤地認爲hash ['foo']爲零。 – pguardiario

-1

arr.inject({}){|h, x| (h[x.to_sym] || = []) << rand(10); h }

+0

的提示,它比原始代碼更長 – thebugfinder

相關問題