我需要在pharo中实现标记为子类的消息,它就像子类一样工作,但我需要创建的类以某种方式标记,例如我尝试在创建它之后添加一个唯一的实例变量,但它只是不起作用,也许我把它添加到错误的地方。 要求是:
示例:
User markedSubclass: #MarkedUser
User subClass: #UnmarkedUser
MarkedUser subclass: #MarkerUser2
我需要以某种方式知道MarkedUser和UnmarkedUser都是标记的类。 我最近想到的是将方法“isMarked”添加到Class类中,这一切都是这样 类会有它,每个类都会相应地覆盖它,所以如果我们写
User class isMarked.
它将返回false,但如果我们写:
MarkedUser class isMarked.
MarkedUser2 class isMarked.
两者都会返回true。 但是我可以在哪里添加此方法?如何让类在运行时覆盖该方法?
答案 0 :(得分:1)
在您的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
方法,以设置与接收方相同的标记。