[英]Message forwarding with doesNotUnderstand in Smalltalk
我有一個關於重新定義消息doesNotUnderstand:
in smalltalk 的疑問。 我想要做的是將 object 收到的所有無法理解的消息轉發到它所知道的另一個 object 中。 我的問題來自這樣一個事實,即兩個對象(接收者和轉發對象)都具有由超級 class 繼承的相同協議,並且當 object 的特定協議不理解該消息但如果它被繼承協議,它執行繼承的消息而不是doesNotUnderstand:
因此不轉發消息並調用超級class消息)。
我非常感謝您的幫助,問候!
據我了解,您有一種情況,您想轉發一條消息,但轉發的消息(我們稱其為代理對象)可以理解,因此不會在代理中調用doesNotUnderstand:
您有兩種可能的解決方案。 首先(一般來說),代理 object 應該從ProtoObject
繼承,以避免繼承任何默認行為。 但是,如果這不是真正的代理 object(基本上傳遞所有內容),那么您需要覆蓋應該轉發的消息並直接調用doesNotUnderstand:
或您的轉發代碼)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.