0

IRB 1.8.7 でハッシュを印刷すると奇妙な動作が見られます。ハッシュを で初期化Hash.newすると、ハッシュが空のハッシュに「評価」されているように見えます。

irb(main):024:0> h = Hash.new([])
=> {}
irb(main):025:0> h["test"]
=> []                                                        
irb(main):026:0> h["test"] << "blah"                    
=> ["blah"]                                         
irb(main):027:0> h                              
=> {}                                                  
irb(main):028:0> puts h.inspect                       
{}                                                               
=> nil                 
irb(main):031:0> require 'pp'     
=> true                           
irb(main):032:0> pp h             
{}                                
=> nil                            
irb(main):033:0> h["test"]
=> ["blah"]

ご覧のとおり、データ実際にはハッシュに存在しますが、印刷または表示しようとすると失敗するようです。ハッシュ リテラルで初期化すると、この問題が解決するようです。

irb(main):050:0> hash = { 'test' => ['testval'] }
=> {"test"=>["testval"]}
irb(main):051:0> hash
=> {"test"=>["testval"]}
irb(main):053:0> hash['othertest'] = ['secondval']
=> ["secondval"]
irb(main):054:0> hash
=> {"othertest"=>["secondval"], "test"=>["testval"]}
4

2 に答える 2