2014-11-24 40 views
0

我使用EJ Holme的相當出色的restforce gem來說明我的salesforce實例。Ruby:從Hashie :: Mash中找到非零記錄數的簡便方法:: Mash

它正在爲客戶端記錄返回一個hashie mash。我想要做一些內置的方法,但我會陷入困境。

散列返回大約550個數組值對。例如Restforce_hash.last將返回類似:

["field_title", "field_content">] 

到目前爲止如此之大,我想提出一個總結框,顯示了許多領域如何使用備案度量頂部。

如果我打電話給Restforce_hash.length,我得到的返回總數很好。

但是我真正想要的是創紀錄的對數,其中陣列中的第二項(即..在「field_content」是爲零。

我希望會有一些偉大的一個整齊這就像直插紅寶石方法:

Restforce_hash.not_nil.length

但我沒有隻是喜悅跟蹤下來的東西......是有辦法還是我必須遍歷散列和計數的數量! =無記錄?

回答

2

試試這個:

restforce_hash.count { |key, val| !val.nil? } 
+0

非常感謝你! 我需要讀一下你在那裏做了什麼。我應該在文檔中查找哪些術語?我看到你已經有了hash中的方法和管道中的迭代器。 {}中代碼的含義是什麼? – Huw 2014-11-24 20:29:08

+0

@Huw「{}」中的代碼被稱爲一個塊 - http://rubylearning.com/satishtalim/ruby_blocks.html – 2014-11-24 22:07:16

+0

謝謝,這是一個很好的開始! – Huw 2014-11-24 23:09:10

1
Restforce_hash.select{|key,value| value.present? } 

將排除所有的NIL +空白元后返回的所有元素。 如果

 Restforce_hash={:a=> "sss", :b=>"cvcxc",:c=>"",:f=>nil} 

那麼如果你想知道有多少零值有在哈希

Restforce_hash.select{|key,value| value.present? } 

將返回

{:a=>"sss", :b=>"cvcxc"} 
0

,只需使用:

hash = {a:1, b:nil, c:2} 
hash.values.count{ |v| !v } # => 1