我有一个关于doesNotUnderstand:
在 smalltalk 中重新定义消息的问题。我想要做的是将一个对象接收到的所有不被理解的消息转发到它所知道的另一个对象。我的问题来自这样一个事实,即两个对象(接收者和转发者)都具有由超类继承的相同协议,并且当对象的特定协议不理解消息但继承的对象理解消息时协议,它执行继承的消息而不是doesNotUnderstand:
(因此不转发消息并调用超类消息)。
我真的很感谢你的帮助,问候!
据我了解,您有一种情况,您想转发一条消息,但转发的消息(我们称之为代理对象)可以理解,因此doesNotUnderstand:
没有在代理中被调用。
您有两种可能的解决方案。首先(一般来说),代理对象应该继承ProtoObject
以避免继承任何默认行为。但是,如果这不是真正的代理对象(基本上传递所有内容),那么您需要覆盖应该转发的消息并doesNotUnderstand:
直接调用(或您的转发代码)。
归档时间: |
|
查看次数: |
116 次 |
最近记录: |