如何添加特定类的新方法或删除方法?或者,如果我尝试添加一个已经存在的方法,那么它将覆盖它(虽然在这种情况下我可以删除旧的并添加新的相同)?
当方法本身表示为String时可以完成吗? (我的意思是在不使用外部文件的情况下这样做,但只是将方法写成字符串)。
例如,获取类,符号和字符串的方法是方法的代码,并将此方法添加到aClass中,如果存在则覆盖旧方法:
in: aClass add: aSymbol sourceCode: aString
和用法示例:
in: ClassA add: #something sourceCode: 'self subclassResponsibility'
答案 0 :(得分:6)
这很容易。检查Behavior类中的“编译”类别。你可以这样做:
MyClass compile: 'something
^ self subclassResponsability'.
检查“编译”类别中的其余方法,您可以在其中指定放置方法的类别,通知对象,错误块等。如果您使用现有方法调用#compile:它只会覆盖它。
对于删除,同样的检查方法,如#removeSelector:在Behavior或ClassDescription中实现。你可以这样做:
MyClass removeSelector: something.
干杯