Ruby class names and assignment
In general each Ruby class has a name. It can be obtained by calling
Class#
. There is an exception to this however: anonymous
classes. The simplest way to create an anonymous class is through
the constructor Class.
. As could be expected, anonymous
classes’ name is nil
. This name however can’t be directly
assigned: there is no Class#
. I was surprised to learn
however, that there is still a mechanism through which a name can be
assigned to an anonymous class. Assigning an anonymous class to a
constant will assign the constant’s name as the class name.
irb(main):001:0> my_class = Class.new => #<Class:0x0000561172d87b40> irb(main):002:0> my_class.name => nil irb(main):003:0> MyClass = my_class => MyClass irb(main):004:0> my_class.name => MyClass