向类添加/重写/编辑主体方法(Smalltalk-Squeak)

向类添加/重写/编辑主体方法(Smalltalk-Squeak),smalltalk,squeak,Smalltalk,Squeak,如何添加新方法或删除特定类的方法?或者,如果我尝试添加一个已经存在的方法,那么它将覆盖它(尽管在这种情况下,我可以删除旧方法,然后添加相同的新方法) 当方法本身被表示为字符串时,可以这样做吗?(我的意思是不使用外部文件之类的,而只是将方法编写为字符串) 例如,一个方法获取一个类、一个符号和一个字符串,该字符串是该方法的代码,并将此方法添加到aClass,如果存在,则覆盖旧方法: in: aClass add: aSymbol sourceCode: aString 和使用示例: in: Cla

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

当方法本身被表示为字符串时,可以这样做吗?(我的意思是不使用外部文件之类的,而只是将方法编写为字符串)

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

in: aClass add: aSymbol sourceCode: aString
和使用示例:

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

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

 MyClass compile: 'something
   ^ self subclassResponsability'.
检查“compile”类别中的其余方法,在该类别中,您可以指定将该方法放在哪个类别中、通知给谁、错误块等。如果您调用#compile:with the method existing,它只会覆盖它

对于删除,同样要检查像#removeSelector:在行为或类描述中实现的方法。你可以做:

 MyClass removeSelector: something.

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

 MyClass compile: 'something
   ^ self subclassResponsability'.
检查“compile”类别中的其余方法,在该类别中,您可以指定将该方法放在哪个类别中、通知给谁、错误块等。如果您调用#compile:with the method existing,它只会覆盖它

对于删除,同样要检查像#removeSelector:在行为或类描述中实现的方法。你可以做:

 MyClass removeSelector: something.

干杯

谢谢,我已经阅读了#compile:的描述,但我无法真正理解它返回了什么?它只是说“将参数、代码编译为接收方上下文中的源代码”。如果我假设它按预期创建了一个方法代码,我仍然找不到任何有用的方法来帮助我将此方法添加到aClass。有什么想法吗?也许#compile:返回CompiledMethod?不清楚,这是直接补充的。当您执行aClass编译时,请使用自己的名称。“自我剂量测量”,它编译这样的方法,它生成一个CompiledMethod并将其放入methodDict或aClass中。所以你可以这样做:aClass methodDict at:#某物,你会得到这个方法,谢谢,我已经阅读了#compile:的描述,但我不能真正理解它返回了什么?它只是说“将参数、代码编译为接收方上下文中的源代码”。如果我假设它按预期创建了一个方法代码,我仍然找不到任何有用的方法来帮助我将此方法添加到aClass。有什么想法吗?也许#compile:返回CompiledMethod?不清楚,这是直接补充的。当您执行aClass编译时,请使用自己的名称。“自我剂量测量”,它编译这样的方法,它生成一个CompiledMethod并将其放入methodDict或aClass中。所以你可以这样做:aClass methodDict at:#某物,你就会得到方法,