我需要在pharo中实现与子类相同的消息markedSubclass,但我需要对创建的类进行某种方式的标记,例如,我尝试在创建它后添加一个唯一的实例变量,但它无法正常工作,也许我将其添加到错误的位置。要求是:
例子:
User markedSubclass: #MarkedUser
User subClass: #UnmarkedUser
MarkedUser subclass: #MarkerUser2
我需要以某种方式知道MarkedUser和UnmarkedUser都是标记的类。我最近想到的是向Class类添加方法“ isMarked”,这样所有的类都会拥有它,并且每个类都会相应地覆盖它,因此如果我们编写
User class isMarked.
它会返回false,但是如果我们这样写:
MarkedUser class isMarked.
MarkedUser2 class isMarked.
两者都将返回true。但是我可以在哪里添加此方法?如何在运行时使类覆盖该方法?
在您的User
班级中添加如下所示的班级方法:
markedSubclass: className
| subclass |
subclass := self subclass: className asSymbol.
subclass class compile: 'isMarked', String cr, String tab, ' ^ true'.
^ subclass
然后在工作区中尝试:
User markedSubclass: 'MyMarkedSubclass'
相应地添加一个#unmarkedSubclass:
类方法。
然后,您可以覆盖类中的常规#subclass:
方法,User
以设置与接收者相同的标记。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句