के साथ हैश में जोड़कर मैंने निम्नलिखित रूबी कोड की कोशिश की, जिसे मैंने सोचा था कि उन लंबाई के साथ शब्दों की लंबाई लंबाई का हैश वापस कर देगा। इसके बजाय यह खाली है।रूबी सरणी मान
map = Hash.new(Array.new)
strings = ["abc","def","four","five"]
strings.each do |word|
map[word.length] << word
end
हालांकि, अगर मैं इसे
map = Hash.new
strings = ["abc","def","four","five"]
strings.each do |word|
map[word.length] ||= []
map[word.length] << word
end
यह काम करता है के लिए संशोधित।
क्या पहला संस्करण सिर्फ एक हैश नहीं बना है जिसका डिफ़ॉल्ट मान खाली सरणी है? इस मामले में, मुझे समझ में नहीं आता कि 2 ब्लॉक अलग-अलग मूल्य क्यों देते हैं।
यह अजीब है। पहले उदाहरण के लिए, यह काम करता है अगर आप 'map = हैश.न्यू {| एच, के | एच [के] = []} ' –