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

use*_*413 1 smalltalk squeak

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

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

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

in: aClass add: aSymbol sourceCode: aString
Run Code Online (Sandbox Code Playgroud)

和用法示例:

in: ClassA add: #something sourceCode: 'self subclassResponsibility'
Run Code Online (Sandbox Code Playgroud)

小智 6

这很容易.检查Behavior类中的"编译"类别.你可以这样做:

 MyClass compile: 'something
   ^ self subclassResponsability'.
Run Code Online (Sandbox Code Playgroud)

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

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

 MyClass removeSelector: something.
Run Code Online (Sandbox Code Playgroud)

干杯