Eh? The example below:
symbol_mash = SymbolizedMash.new(id: 123, name: 'Rey')
symbol_mash.each do |key, value|
# key is :id, then :name
# value is 123, then 'Rey'
end
seems to imply that this is possible (and does an implicit conversion) because it defines to_hash
. But that's simply not true, as these 2 examples below prove:
```
main > symbol_mash.class_eval { undef :to_hash }
=> nil
main > symbol_mash.each {|k,v| p [k,v] }
[:id, 123]
[:name, "Rey"]
=> {:id=>123, :name=>Rey}
```
```
main > s = 'a'
=> a
main > s.class_eval do
def to_hash
chars.zip(chars).to_h
end
end
=> :to_hash
main > s.to_hash
=> {a=>a}
main > s.each
Traceback (most recent call last) (filtered by backtrace_cleaner; set Pry.config.clean_backtrace = false to see all frames):
1: (pry):85:in __pry__'
NoMethodError: undefined method
each' for "a":String
```