2013-11-20 43 views
2

嘗試使用哈希除了有許多值從一個代碼如何使用散列除了數組值?或者如何創建哈希線?

H1 =散列[:狀態=> 1,代碼=> 2]

H2 =散列[:狀態=> 10,代碼=> 20 ]

這項工作:

H1.except(:state, :code) 

哈希 - > H1將不包含值。 OK

但是波紋管是不是工作

H1.expect(H2.keys) 

哈希 - > H1將包含值。不是

問題是因爲紅寶石把order.keys與BRACKET。我試圖從陣列產生,但也無法工作

+0

'expect'是什麼? –

回答

5

你在做什麼等於呼叫H1.except([:state, :code])

如果H1.except(:state, :code)作品,只是unsplat數組:

H1.except(*H2.keys) 
+0

什麼是「期望」?我不知道..你會教我嗎? :) –

+0

@ArupRakshit:我沒有線索的開始......但是他絕對缺少一個未繪製的操作符。 :-) –

+1

@ArupRakshit:發現它... http://apidock.com/rails/Hash/except –

1

,你可以做一個解決方法是:

H2.keys.each do |key| 
    H1.except(key) 
end 
2

您可以在一個班輪使用Lambda做這樣的:

h1 = {:state => 1, :code => 2, :foo => 3, :bar => 4} 
h2 = {:state =>10, :code => 20} 
h1.select {|k,v| !h2.keys.include?(k)} 

收益率

{:foo=>3, :bar=>4}