pharo 2.0 smalltalk中有标记和无标记的类
我需要在pharo中实现消息markedSubclass,它的工作方式与subclass一样,但我需要以某种方式标记创建的类,例如,我尝试在创建后向它添加一个唯一的实例变量,但它不起作用,可能是我将它添加到了错误的位置。 要求如下:pharo 2.0 smalltalk中有标记和无标记的类,smalltalk,pharo,Smalltalk,Pharo,我需要在pharo中实现消息markedSubclass,它的工作方式与subclass一样,但我需要以某种方式标记创建的类,例如,我尝试在创建后向它添加一个唯一的实例变量,但它不起作用,可能是我将它添加到了错误的位置。 要求如下: 此标记类的每个子类也应标记,即使 是通过子类(未标记子类)创建的 除此之外,一个标记类应该像一个普通类一样工作。 任何帮助都将不胜感激 例如: User markedSubclass: #MarkedUser User subClass: #UnmarkedUser
User markedSubclass: #MarkedUser
User subClass: #UnmarkedUser
MarkedUser subclass: #MarkerUser2
我需要知道MarkedUser和UnmarkedUser都是标记类。
我最近想到的是在类中添加“isMarked”方法,就是这样
类将拥有它,每个类将相应地重写它,因此如果我们编写
User class isMarked.
它将返回false,但如果我们写入:
MarkedUser class isMarked.
MarkedUser2 class isMarked.
这两种情况都会恢复为真。
但是在哪里可以添加此方法?如何使类在运行时重写此方法?向您的
用户
类添加如下类方法:
markedSubclass: className
| subclass |
subclass := self subclass: className asSymbol.
subclass class compile: 'isMarked', String cr, String tab, ' ^ true'.
^ subclass
然后在工作区中尝试:
User markedSubclass: 'MyMarkedSubclass'
相应地添加一个#unmarkedSubclass:
类方法
然后,您可以覆盖
用户
类中的常规子类:
方法,以设置与接收器相同的标记。您能给我们一个代码示例吗?非常感谢,它很有效!但非常奇怪的是,我试图做同样的事情,但对我来说不起作用,也许我的语法错了,我不确定,真的很感激!