gpt4 book ai didi

smalltalk - 在Squeak中,如何包装每个方法send?

转载 作者:行者123 更新时间:2023-12-02 22:24:03 25 4
gpt4 key购买 nike

我创建了一个类,在该类中我有一个方法“sendMessage: to: withArgs:”,它接收一个对象、一条消息和一个参数数组。该方法用于向对象发送消息并执行一些算法。要使用此方法,我必须创建我创建的类的实例 x 并执行类似 x sendMessage: '+' to: '7' withArgs: '#(5)' 的操作。将消息“+”发送到带有参数 5 的对象 7 的结果,加上我的算法所做的一些事情。但我想要的是该算法将在每个方法调用中使用,这意味着 7+5 将调用我的“sendMessage: to: withArgs:”。我怎样才能做到这一点?或者至少,发送到每个对象的每个方法中是否都调用了某些内容?

最佳答案

这有点有趣,我们刚刚在 Squeak irc channel 中讨论过这个问题。也许看一下 ObjectViewer。

在您的示例中,您想要拦截发送到 SmallInteger 的消息。有趣的是,ObjectViewer 几乎适用于除 SmallInteger 之外的所有类。

因此,要拦截发送到 myObject 的消息,请执行以下操作。

创建类Intercepter,让它继承自ObjectTracer,也许吧。将 doesNotUnderstand 更改为为您服务的内容:

doesNotUnderstand: aMessage
"do Mojo to aMessage as you describe it"

然后,为了让你的东西运转起来,创建你的拦截器:

myIntercepter := Intercepter on: myObject.

然后

myObject become: myInterceptor.

关于smalltalk - 在Squeak中,如何包装每个方法send?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/888900/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com