我遇到以下语句:

(Metaclass class) new. "Uses the new of Behavior but throws error because Metaclass class is singleton"
Metaclass new. "Uses the new of Behavior"

我以为Metaclass classMetaclass,那么答案为何不同?
我似乎无法弄清楚方法查找的工作方式。我需要遵循哪个层次树?在哪里可以找到具有基本类的几乎完整的树?

最佳答案

类/元类关系是Smalltalk中最复杂的主题之一,但它也是所有事物以一致的方式组合在一起的优雅方式的一部分。

方法查找从对象的类(该类描述对象)持有的MethodDictionary开始,并沿继承链向上进行。

通常,您不应该创建Metaclass的新实例,而应该让IDE /工具为您创建Metaclass,这是创建新类的副作用(将#'subclass:...'发送到现有的超类)。

您可以在Smalltalk映像中找到一棵基本类树。详细信息取决于方言,Squeak应该具有“类层次结构浏览器”,使您可以查看事物。

以下是有助于我形象化关系的图片。

smalltalk - “元类类”仅仅是元类,这是真的吗?-LMLPHP

10-05 20:55