Actions
Bug #12027
closedHash descendants are ignoring custom to_hash method
Bug #12027: Hash descendants are ignoring custom to_hash method
Description
I'm not sure it is not intended, but feels really strange:
class A def to_hash {foo: 'bar'} end end class B < Hash def to_hash {foo: 'bar'} end end a = A.new b = B.new p({**a}) # => {foo: 'bar'} p({**b}) # => {} -- ooops. Seems "internal" hash state is used # therefore: b['test'] = 1 p({**b}) # => wrong argument type String (expected Symbol) (TypeError) What am I missing here?
Updated by nobu (Nobuyoshi Nakada) almost 10 years ago
- Description updated (diff)
- Status changed from Open to Rejected
Because b.is_a?(Hash) already.
to_hash is the method to pretend to be a Hash.
Actions