Project

General

Profile

Actions

Bug #6029

closed

Should OpenStruct implement #eql? and #hash?

Bug #6029: Should OpenStruct implement #eql? and #hash?

Added by marcandre (Marc-Andre Lafortune) over 13 years ago. Updated almost 13 years ago.

Status:
Closed
Target version:
ruby -v:
r34620
Backport:
[ruby-core:42651]

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?


Related issues 1 (0 open1 closed)

Related to Ruby - Feature #6056: Enhancements to OpenStructClosedmarcandre (Marc-Andre Lafortune)Actions

Updated by shyouhei (Shyouhei Urabe) over 13 years ago Actions #1

  • Status changed from Open to Assigned

Updated by marcandre (Marc-Andre Lafortune) almost 13 years ago Actions #2

  • 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.


Actions

Also available in: PDF Atom