Project

General

Profile

Feature #12380

`Struct` as a subclass of `Class`

Added by sawa (Tsuyoshi Sawada) over 4 years ago. Updated over 4 years ago.

Status:
Open
Priority:
Normal
Assignee:
-
Target version:
-
[ruby-core:75500]

Description

This issue is somewhat of the same flavor as #12374.

Struct has a constructor that creates a class:

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

and this is the same situation with Class.

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

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

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.

Also available in: Atom PDF