簡體   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