添加/覆盖/编辑正文方法到类(Smalltalk - Squeak)

时间:2011-05-01 17:21:02

标签: smalltalk squeak

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

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

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

in: aClass add: aSymbol sourceCode: aString

和用法示例:

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

1 个答案:

答案 0 :(得分:6)

这很容易。检查Behavior类中的“编译”类别。你可以这样做:

 MyClass compile: 'something
   ^ self subclassResponsability'.

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

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

 MyClass removeSelector: something.

干杯