मुझे नहीं पता कि यह एक हैश मुद्दा या एक ऐरे मुद्दा है, लेकिन मुझे पता नहीं है कि डेटा से भरा हैश प्राप्त करने के लिए तीसरे उदाहरण में तारांकन (*) संकेत क्यों आवश्यक है। इसके बिना, यह एक खाली हैश आउटपुट करता है।मुझे सरणी से पहले तारांकन की आवश्यकता क्यों है?
# -*- coding: utf-8 -*-
require 'pp'
pp [[:first_name, 'Shane'], [:last_name, 'Harvie']]
# => [[:first_name, "Shane"], [:last_name, "Harvie"]]
pp [[:first_name, 'Shane'], [:last_name, 'Harvie']].flatten
# => [:first_name, "Shane", :last_name, "Harvie"]
pp Hash[*[[:first_name, 'Shane'], [:last_name, 'Harvie']].flatten]
# => {:first_name=>"Shane", :last_name=>"Harvie"}
pp Hash[[[:first_name, 'Shane'], [:last_name, 'Harvie']].flatten]
# => {}
नीचे विधि का एक स्पष्टीकरण है।
--------------------------------------------------------------- Hash::[]
Hash[ [key =>|, value]* ] => hash
From Ruby 1.8
------------------------------------------------------------------------
Creates a new hash populated with the given objects. Equivalent to
the literal +{ _key_, _value_, ... }+. Keys and values occur in
pairs, so there must be an even number of arguments.
Hash["a", 100, "b", 200] #=> {"a"=>100, "b"=>200}
Hash["a" => 100, "b" => 200] #=> {"a"=>100, "b"=>200}
{ "a" => 100, "b" => 200 } #=> {"a"=>100, "b"=>200}
आपके विस्तृत स्पष्टीकरण और लिंक के लिए बहुत बहुत धन्यवाद। अब मैं पूरी तरह से समझता हूं कि यह क्या है। अब सब कुछ समझ में आता है। –