pharo 2.0 smalltalk中有标记和无标记的类

pharo 2.0 smalltalk中有标记和无标记的类,smalltalk,pharo,Smalltalk,Pharo,我需要在pharo中实现消息markedSubclass,它的工作方式与subclass一样,但我需要以某种方式标记创建的类,例如,我尝试在创建后向它添加一个唯一的实例变量,但它不起作用,可能是我将它添加到了错误的位置。 要求如下: 此标记类的每个子类也应标记,即使 是通过子类(未标记子类)创建的 除此之外,一个标记类应该像一个普通类一样工作。 任何帮助都将不胜感激 例如: User markedSubclass: #MarkedUser User subClass: #UnmarkedUser

我需要在pharo中实现消息markedSubclass,它的工作方式与subclass一样,但我需要以某种方式标记创建的类,例如,我尝试在创建后向它添加一个唯一的实例变量,但它不起作用,可能是我将它添加到了错误的位置。 要求如下:

  • 此标记类的每个子类也应标记,即使 是通过子类(未标记子类)创建的
  • 除此之外,一个标记类应该像一个普通类一样工作。 任何帮助都将不胜感激
  • 例如:

    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:
    类方法


    然后,您可以覆盖
    用户
    类中的常规
    子类:
    方法,以设置与接收器相同的标记。

    您能给我们一个代码示例吗?非常感谢,它很有效!但非常奇怪的是,我试图做同样的事情,但对我来说不起作用,也许我的语法错了,我不确定,真的很感激!