1

如何添加新方法删除特定的方法?或者,如果我尝试添加一个已经存在的方法,那么它将覆盖它(尽管在这种情况下我可以删除旧的并添加相同的新方法)?

当方法本身表示为String时可以做到吗?(我的意思是不使用外部文件等,但只是将方法写成字符串)。

例如,一个方法获取一个类、一个符号和一个作为方法代码的字符串,并将此方法添加到 aClass 中,如果存在,则覆盖旧的:

in: aClass add: aSymbol sourceCode: aString

和用法示例:

in: ClassA add: #something sourceCode: 'self subclassResponsibility'
4

1 回答 1

6

这很容易。检查行为类中的“编译”类别。您可以执行以下操作:

 MyClass compile: 'something
   ^ self subclassResponsability'.

检查“编译”类别中的其余方法,您可以在其中指定将方法放在哪个类别,通知谁,错误块等。如果您调用#compile:使用存在的方法,它只会覆盖它。

对于删除,同样,检查方法,如 #removeSelector:在 Behavior 或 ClassDescription 中实现。你可以做:

 MyClass removeSelector: something.

干杯

于 2011-05-01T18:13:27.257 回答