/ / हैश के हैश में मान कैसे बढ़ाएँ? - रूबी-ऑन-रेल्स, रूबी-ऑन-रेल्स -3, रूबी-ऑन-रेल्स-3.1

हैश के हैश में मूल्यों को कैसे समेटें? - रूबी-ऑन-रेल, रूबी-ऑन-रेल -3, रूबी-ऑन-रेल-3.1

मेरे पास एक हैश में हैश है, मूल रूप से यह:

@hash_os_versions = Hash.new{ |h,k| h[k] = Hash.new{|h, k| h[k] = 0} }

यह हैश उत्पन्न करता है:

operation_system => {version, count}*

एक उदाहरण:

{"Linux"=>{"Fedora"=>4, "Debian"=>2, "OpenSUSE"=>3, "Red Hat"=>2, "Ubuntu"=>2}, "Mac OS"=>{"OS X 10.4 Tiger"=>3, "OS X 10.6 Snow Leopard"=>4, "OS X 10.5 Leopard"=>3, "OS X 10.7 Lion"=>2}, "Windows"=>{"Windows 2000"=>3, "Windows 7"=>2, "Windows 98"=>2, "Windows Vista"=>2, "Windows XP"=>2}}

मैं गणना कैसे कर सकता हूं? मामले में, 4 +2 +3 +2 ...

मैंने यह कोशिश की, लेकिन इसके काम नहीं:

<%= sum = os_versions[1].inject(0) { |sum, tuple| sum += tuple[1] } %>

हमेशा शून्य पर लौटें।

Ps: क्षमा करें मेरा अंग्रेजी: P

उत्तर:

उत्तर № 1 के लिए 1

आपको एक इंडेक्स नहीं, कुंजी का उपयोग करके हैश का उपयोग करने की आवश्यकता है। यह काम करना चाहिए।

2.0.0-p451 :006 > sum = os_versions["Mac OS"].inject(0) { |sum, tuple| sum += tuple[1] }
=> 12