Pharo Smalltalk - 消息转发,是否可以拦截消息并将其重定向到另一个对象(实例)?
在Objective-C中有forwardInvocation:在抛出异常之前调用它,这样你就可以对你收到的消息做一些事情并且一无所知。
我是否可以将消息重定向到委托?
答案 0 :(得分:5)
Smalltalk有doesNotUnderstand: aMessage
,它被发送到接收器而不是其他未定义的方法。你可以覆盖它并做任何你想做的事情(例如将消息转发给另一个对象,将其记录到磁盘,......),例如:
doesNotUnderstand: aMessage
aMessage sendTo: self delegate.
如果你想"拦截"实际在对象上定义的消息,有两个选项: