簡體   English   中英

在 Smalltalk 中使用 doesNotUnderstand 轉發消息

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM