好的,所以每个人都知道大写的标识符在 Ruby 中被视为“常量”。
但是,可以为常量分配新值,因此以下工作
class A
def self.hi; "hi"; end
end
class B
def self.hi; "ho"; end
end
A.hi # => "hi"
B.hi # => "ho"
A = B
# warning: already initialized constant A
# => B
A.hi # => "ho"
并且还分配给小写标识符的工作:
a = B
a.hi # => "ho"
但是,内部名称在所有情况下都设置为“B”,并且新标识符名称也仅引用“B”。
但是,如果标识符具有小写名称在技术上是可以的,那么为什么要限制类的内部名称呢?它不可能是恒定的,因为它不是恒定的;所以另一个原因可能是小写标识符具有不同的范围。但是然后:为什么不使用小写范围的类呢?
我想知道,因为解析器甚至允许使用 unicode 等格式的方法名称,所以对于类来说它受到更多限制似乎很奇怪。