开发者

Get sender of a message in Smalltalk

开发者 https://www.devze.com 2022-12-16 00:11 出处:网络
Is there a practical way to get the sender of a message in Smalltalk without manually passing self as a Parameter?

Is there a practical way to get the sender of a message in Smalltalk without manually passing self as a Parameter?

To be more concrete: I want to add a class specific prefix to an ID that gets passed to my class, so if ClassA sends (on class side)

ClassB doSomethingWith: 'myId'.
开发者_运维百科

ClassB should internally treat 'myId' as 'ClassB-myId' or something similar.

I have implemented this with an additional parameter which has to be self

ClassB doSomethingWith: 'myId' for: self.

but I would be very glad if there is a solution without this explicit send of self.


You can use the reflective facilities on the execution stack:

thisContext sender receiver

  1. thisContext answers the current stack frame
  2. sender answers the parent stack frame
  3. receiver answers the receiver of the stack frame

This should work in Pharo, VisualWorks and GemStone. Other Smalltalk might use different method names.

0

精彩评论

暂无评论...
验证码 换一张
取 消