एक सरणी से हैश की हैश - रूबी

एक सरणी से:

this = [1, 2, 3, 4, 5]

मैं हैश का हैश बनाने की कोशिश कर रहा हूं:

{{num: 1}, {num: 2}, {num: 3}, {num: 4}, {num: 5}}

लेकिन मुझे एक खाली हैश मिल रहा है:

Hash.new(this.each do |num| Hash.new(num: num) end)
# => {}

मैं क्या गलत कर रहा हूं?

उत्तर:

जवाब के लिए 5 № 1

सबसे पहले, आपके प्रश्न में आपका वांछित परिणाम हैश का उपयोग कर "आप समझ में नहीं आता" {} वाक्यविन्यास, लेकिन कोई चाबियाँ नहीं हैं। ऐसा लगता है कि आप चाहते हैं कि आपका परिणाम हैश की सरणी हो।

दूसरा, आप उलझन में हैं each साथ में mapeach ब्लॉक में प्रत्येक आइटम को पास करने, बस एक सरणी के माध्यम से पुनरावृत्त करता है। का वापसी मूल्य arr.each सिर्फ arrmapदूसरी ओर, ब्लॉक के वापसी मूल्य के आधार पर एक नई सरणी लौटाती है:

[1, 2, 3, 4, 5].map { |item| { num: item } }

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

आप किसी भी कुंजी-मूल्य जोड़े को सेट किए बिना डिफ़ॉल्ट मान सेट कर रहे हैं (इसके अलावा एक ब्लॉक के साथ जो सार्थक कुछ भी नहीं करता है)।


संबंधित सवाल
सबसे लोकप्रिय