Issue #12380 has been reported by Tsuyoshi Sawada.

----------------------------------------
Feature #12380: `Struct` as a subclass of `Class`
https://bugs.ruby-lang.org/issues/12380

* Author: Tsuyoshi Sawada
* Status: Open
* Priority: Normal
* Assignee: 
----------------------------------------
This issue is somewhat of the same flavor as #12374.

`Struct` has a constructor that creates a class:

~~~ruby
Struct.new(:foo)
# => #<Class:0x007f605f892cb0>
~~~

and this is the same situation with `Class`.

~~~ruby
Class.new
# => #<Class:0x007f605f70c788>
~~~

Hence, most naturally, `Struct` should be a subclass of `Class`. But in reality, it isn't:

~~~ruby
Struct.ancestors
# => [Struct, Enumerable, Object, Kernel, BasicObject]
~~~

The current structure around `Struct` is counter-intuitive to me.

I propose that either `Struct` should be redefined as a subclass of `Class`, or a new class `StructClass` should be introduced as a subclass of `Class`, and take over the functionality of `Struct`.



-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>