Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Undefined method 'to_h' on Ruby array

As per Ruby Array documentation, there is a method to_h which can be used to convert arrays to hash as long as each element of the array is another array of two elements. Example below from the same documentation

p [[:foo, :bar], [1, 2]].to_h

However, when I run the above code, I get this error:

irb(main):001:0> p [[:foo, :bar], [1, 2]].to_h
NoMethodError: undefined method `to_h' for [[:foo, :bar], [1, 2]]:Array
        from (irb):1
        from E:/RubyInstall/bin/irb:12:in `<main>'
irb(main):002:0>

My Ruby version is

C:\>ruby -v
ruby 2.0.0p247 (2013-06-27) [x64-mingw32]

I wanted to use this technique to answer another question on Stackoverflow, but I am stuck now as a documented feature of Ruby is not working for me.

like image 852
Wand Maker Avatar asked Jul 28 '15 18:07

Wand Maker


2 Answers

The to_h method is only available in Ruby version 2.1 or higher.

Check the release notes here

http://pivotallabs.com/ruby-2-1-0-changes-of-note/

like image 79
Richard Hamilton Avatar answered Sep 26 '22 13:09

Richard Hamilton


Yes, it's not supported for lower version than Ruby 2.1, If you are looking for alternative. Try this

keys = [:foo, :bar]
vals = [1, 2]
Hash[*keys.zip(vals).flatten]
 => {:foo=>1, :bar=>2}
like image 36
Datt Avatar answered Sep 22 '22 13:09

Datt