Skip to content

Preview Ruby 4.1 is a preview. It can change before the final release. Switch to Ruby 4.0 →

instance method

Struct#to_h

() -> ::Hash[::Symbol, E]
[K, V] () { (::Symbol key, E value) -> [ K, V ] } -> ::Hash[K, V]
to_h → hash
to_h {|name, value| ... } → hash

Returns a hash containing the name and value for each member:

Example
Customer = Struct.new(:name, :address, :zip)
joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
h = joe.to_h
h # => {name: "Joe Smith", address: "123 Maple, Anytown NC", zip: 12345}

If a block is given, it is called with each name/value pair; the block should return a 2-element array whose elements will become a key/value pair in the returned hash:

Example
h = joe.to_h{|name, value| [name.upcase, value.to_s.upcase]}
h # => {NAME: "JOE SMITH", ADDRESS: "123 MAPLE, ANYTOWN NC", ZIP: "12345"}

Raises ArgumentError if the block returns an inappropriate value.

See also #to_a #to_s #size #values also in 4.0 · 3.4 · 3.3 · 3.2 · 3.1 · 3.0