[英]How to get *all* classes in Pharo?
难题...尝试了Smalltalk allClasses
中的Kernel-Traits
Smalltalk allClasses
和TBehaviour
,似乎从列表中丢失了。 有趣的是,这是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.