如何在 Pharo 中获得 *all* 类?
How to get *all* classes in Pharo?
难题...尝试了 Smalltalk allClasses
和 TBehaviour
中的 Kernel-Traits
,但似乎不在列表中。有趣的是,它是 Trait
而不是 Class
...?好像有对应的allTraits
和allBehaviors
.
在尝试获取所有内容时,我们还应该了解其他哪些信息?还是有其他方法可以获取所有内容?
你需要执行:
Smalltalk allClassesAndTraits.
注意:我以为在一些 Pharo 书中描述了反射,但我在任何书中都没有看到,所以无法指导您进一步阅读。
类 是对象
您始终可以对 Pharo 对象使用反射,这可能会让您更深入地了解您实际要查找的内容。
Any class 也是一个对象,一个 any 对象理解消息 allSubclasses
(或 withAllSubclasses
),它会给你...子classes。
Object willAllSubclasses
请注意,上面还会为您提供 "class-side" classes(它们是每个 class 的元 class 实例),因为它们也是对象;所以
Smalltalk allClasses asSet =¹ (ProtoObject withAllSubclasses \ Class allSubclasses) asSet
"or"
Smalltalk allClasses asSet = (ProtoObject withAllSubclasses \ Metaclass allInstances) asSet
特质不是类
Trait
是 class,但 TBehavior
不是;相反,它是 Trait
.
的 实例
所以你可以说
Trait allSubclasses. "an OrderedCollection()"
Trait allInstances. "{... TBehavior. TClass. ...}"
¹SMarkCompilerTargetClass
是一些特殊的雪花。
难题...尝试了 Smalltalk allClasses
和 TBehaviour
中的 Kernel-Traits
,但似乎不在列表中。有趣的是,它是 Trait
而不是 Class
...?好像有对应的allTraits
和allBehaviors
.
在尝试获取所有内容时,我们还应该了解其他哪些信息?还是有其他方法可以获取所有内容?
你需要执行:
Smalltalk allClassesAndTraits.
注意:我以为在一些 Pharo 书中描述了反射,但我在任何书中都没有看到,所以无法指导您进一步阅读。
类 是对象
您始终可以对 Pharo 对象使用反射,这可能会让您更深入地了解您实际要查找的内容。
Any class 也是一个对象,一个 any 对象理解消息 allSubclasses
(或 withAllSubclasses
),它会给你...子classes。
Object willAllSubclasses
请注意,上面还会为您提供 "class-side" classes(它们是每个 class 的元 class 实例),因为它们也是对象;所以
Smalltalk allClasses asSet =¹ (ProtoObject withAllSubclasses \ Class allSubclasses) asSet
"or"
Smalltalk allClasses asSet = (ProtoObject withAllSubclasses \ Metaclass allInstances) asSet
特质不是类
Trait
是 class,但 TBehavior
不是;相反,它是 Trait
.
所以你可以说
Trait allSubclasses. "an OrderedCollection()"
Trait allInstances. "{... TBehavior. TClass. ...}"
¹SMarkCompilerTargetClass
是一些特殊的雪花。