Actions
Bug #6029
closedShould OpenStruct implement #eql? and #hash?
Description
Currently, OpenStruct have no specialized #eql? and #hash, so:
require 'ostruct'
x = OpenStruct.new(foo: 42)
y = x.dup
x == y # => true
x.eql?(y) # => false
This means that OpenStruct does not behave like Struct, Array, Hash and other structures by comparing its fields and values.
This also prevents using OpenStructs as hash keys (unless one uses the exact same object as the key), contrary to other structures.
Is there an historical reason for this?
How likely would it be that adding #eql? and #hash create conflict with some fields?
Updated by shyouhei (Shyouhei Urabe) over 12 years ago
- Status changed from Open to Assigned
Updated by marcandre (Marc-Andre Lafortune) about 12 years ago
- Status changed from Assigned to Closed
- % Done changed from 0 to 100
This issue was solved with changeset r37373.
Marc-Andre, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.
- lib/ostruct.rb: Add OpenStruct#eql? and OpenStruct#hash
[ruby-core:42651] [Bug #6029]
Actions
Like0
Like0Like0