Bunun bir Hash sorunu ya da bir Array sorunu olup olmadığı hakkında hiçbir fikrim yok, ancak veriyle dolu bir karma almak için üçüncü örnekte neden yıldız işareti (*) işareti gerektiğini anlamıyorum. Bu olmadan, boş bir karma üretir.Diziden önce neden yıldıza ihtiyacım var?
# -*- 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]
# => {}
Aşağıda, yöntemin açıklaması yer almaktadır.
--------------------------------------------------------------- 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}
Detaylı açıklamanız ve linkleriniz için çok teşekkürler. Şimdi bunun ne olduğunu tam olarak anlıyorum. Şimdi her şey mantıklı. –