繁体   English   中英

如何在Pharo中获得* all *类?

[英]How to get *all* classes in Pharo?

难题...尝试了Smalltalk allClasses中的Kernel-Traits Smalltalk allClassesTBehaviour ,似乎从列表中丢失了。 有趣的是,这是Trait而不是Class ...? 似乎有对应的allTraits allBehaviors

我们在尝试获得一切时应该了解的其他任何信息吗? 还是有其他方法来获取所有内容?

您需要执行:

Smalltalk allClassesAndTraits.

注意:我以为在Pharo的一本书中已经描述了反射,但是我看不到它,因此无法指导您进一步阅读。 🤔

类是对象

您始终可以在Pharo对象上使用反射,这可以使您对实际要查找的内容有更多的了解。

任何类也是一个对象,任何对象都可以理解消息allSubclasses (或withAllSubclasses ),这将为您提供...子类。

Object willAllSubclasses

请注意,以上内容还将为您提供“类方”类(它们是每个类的元类实例),因为它们也是对象。 所以

Smalltalk allClasses asSet =¹ (ProtoObject withAllSubclasses \ Class allSubclasses) asSet
"or"
Smalltalk allClasses asSet = (ProtoObject withAllSubclasses \ Metaclass allInstances) asSet

特质不是阶级

Trait是一类,但TBehavior不是。 相反,它是Trait一个实例

所以你可以说

Trait allSubclasses. "an OrderedCollection()"
Trait allInstances. "{... TBehavior. TClass. ...}"

SMarkCompilerTargetClass是一些特殊的雪花。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM