Pharo Smalltalk - 消息转发,是否可以拦截消息并将其重定向到另一个对象(实例)?
在Objective-C中有forwardInvocation:在抛出异常之前调用它,这样你就可以对你收到的消息做一些事情并且一无所知.
在Smalltalk中有类似的东西,我可以将消息重定向到委托吗?
Smalltalk doesNotUnderstand: aMessage被发送到接收器而不是其他未定义的方法.您可以覆盖它并执行任何操作(例如,将消息转发到另一个对象,将其记录到磁盘,......),例如:
doesNotUnderstand: aMessage
aMessage sendTo: self delegate.
Run Code Online (Sandbox Code Playgroud)
如果要"拦截"实际在对象上定义的消息,则有两个选项: