एक सरणी से हैश की हैश - रूबी
एक सरणी से:
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
साथ में map
। each
ब्लॉक में प्रत्येक आइटम को पास करने, बस एक सरणी के माध्यम से पुनरावृत्त करता है। का वापसी मूल्य arr.each
सिर्फ arr
। map
दूसरी ओर, ब्लॉक के वापसी मूल्य के आधार पर एक नई सरणी लौटाती है:
[1, 2, 3, 4, 5].map { |item| { num: item } }
उत्तर № 2 के लिए 1
आप किसी भी कुंजी-मूल्य जोड़े को सेट किए बिना डिफ़ॉल्ट मान सेट कर रहे हैं (इसके अलावा एक ब्लॉक के साथ जो सार्थक कुछ भी नहीं करता है)।
संबंधित सवाल
सबसे लोकप्रिय
सबसे लोकप्रिय सी
सबसे लोकप्रिय जावा
सबसे लोकप्रिय PHP