Skip to content

Latest commit

 

History

History
48 lines (36 loc) · 783 Bytes

turning-things-into-hashes.md

File metadata and controls

48 lines (36 loc) · 783 Bytes

Turning Things Into Hashes

We have #to_h for turning things into hashes.

It works as an identity function:

> {}.to_h
=> {}
> {hello: "world"}.to_h
=> {:hello=>"world"}

It works with nil:

> nil.to_h
=> {}

Does it work with arrays?

> [:one, 2].to_h
TypeError: wrong element type Symbol at 0 (expected array)
from (pry):36:in `to_h'

Yes, but only if it is an array of pairs:

> [[:one, 2], [:three, 4]].to_h
=> {:one=>2, :three=>4}

It also works with Struct and OpenStruct:

> Person = Struct.new(:name, :age)
=> Person
> bob = Person.new("bob", 45)
=> #<struct Person name="bob", age=45>
> bob.to_h
=> {:name=>"bob", :age=>45}

You'll find that many other objects and gems support #to_h when it makes sense.