Ruby 将类对象与变量关联会更改类对象

Ruby 将类对象与变量关联会更改类对象,ruby,Ruby,请解释这是如何发生的: a = Class.new(StandardError).new # => #<#<Class:0x007fa3af1d24a0>: #<Class:0x007fa3af1d24a0>> a.class.name # => nil AError = a.class # => AError a.class.name # => "AError" a=Class.new(StandardError).new # =>

请解释这是如何发生的:

a = Class.new(StandardError).new
# => #<#<Class:0x007fa3af1d24a0>: #<Class:0x007fa3af1d24a0>>
a.class.name
# => nil
AError = a.class
# => AError
a.class.name
# => "AError"
a=Class.new(StandardError).new
# => #
a、 类名
#=>零
Aeror=a级
#=>误差
a、 类名
#=>“错误”

类对象赋值在语言/vm中是否作为特例处理?类对象如何意识到它已经或没有被分配给常数?

是的,这是预期行为/特殊情况。使用
class.new
创建类时,它最初没有名称。它复制分配给它的第一个常量的名称

类对象如何知道它已被或未被分配给常量


Ruby VM无所不知。

是的,这是预期行为/特例。使用
class.new
创建类时,它最初没有名称。它复制分配给它的第一个常量的名称

类对象如何知道它已被或未被分配给常量


Ruby VM无所不知。

“动态创建类时”作为无名类的条件并不准确。你可以静态地创建一个无名类。@sawa:例如?不,这是一个在Ruby中我们称之为“静态”的问题。你对动态/静态的定义是什么?@sawa:我想我对“动态”的概念是不一致的。我会考虑的。:)“动态创建类时”作为无名类的条件并不准确。你可以静态地创建一个无名类。@sawa:例如?不,这是一个在Ruby中我们称之为“静态”的问题。你对动态/静态的定义是什么?@sawa:我想我对“动态”的概念是不一致的。我会考虑的。:)