在Pharo 11中能否以编程方式修改已定义类的Traits?
在Pharo中编程式添加/移除Traits的方法
当然可以在Pharo中通过编程方式给类添加或移除Traits,和修改父类的方式类似,都是通过向类发送消息来实现。
添加Traits
- 给
MyClass添加单个Trait(会覆盖原有Trait集合):
假设已有TraitTMyTrait,执行以下代码:MyClass uses: TMyTrait - 追加单个Trait(保留原有Trait,新增指定Trait):
MyClass addTrait: TAnotherTrait - 设置多个Trait(覆盖原有集合,同时使用多个Trait):
MyClass uses: {TMyTrait. TAnotherTrait}
移除Traits
- 移除指定单个Trait:
MyClass removeTrait: TMyTrait - 清空类的所有Trait:
MyClass uses: {}
这些操作都是运行时动态修改类的Trait配置,和MyClass subclass: SomeNewClass修改父类的逻辑一致,都是Pharo动态类系统的特性体现。
内容的提问来源于stack exchange,提问作者VitorCruz
相关产品推荐
相关产品推荐

