Oop 在Smalltalk中获取消息的发件人
在Smalltalk中,是否有一种实用的方法来获取消息的发送者,而无需手动将self作为参数传递 更具体地说:我想给传递给我的类的ID添加一个特定于类的前缀,因此如果ClassA发送(在类端) ClassB应该在内部将“myId”视为“ClassB myId”或类似的东西 我已经用一个额外的参数实现了它,这个参数必须是selfOop 在Smalltalk中获取消息的发件人,oop,smalltalk,squeak,Oop,Smalltalk,Squeak,在Smalltalk中,是否有一种实用的方法来获取消息的发送者,而无需手动将self作为参数传递 更具体地说:我想给传递给我的类的ID添加一个特定于类的前缀,因此如果ClassA发送(在类端) ClassB应该在内部将“myId”视为“ClassB myId”或类似的东西 我已经用一个额外的参数实现了它,这个参数必须是self ClassB doSomethingWith: 'myId' for: self. 但如果没有这种明确的自我发送,我会非常高兴。您可以使用执行堆栈上的反射功能: thi
ClassB doSomethingWith: 'myId' for: self.
但如果没有这种明确的自我发送,我会非常高兴。您可以使用执行堆栈上的反射功能:
thisContext发送方-接收方
thisContext
回答当前堆栈帧sender
回答父堆栈帧receiver
回答堆栈帧的接收器这应该适用于Pharo、VisualWorks和GemStone。其他Smalltalk可能使用不同的方法名称。您可以使用执行堆栈上的反射功能:
thisContext发送方-接收方
thisContext
回答当前堆栈帧sender
回答父堆栈帧receiver
回答堆栈帧的接收器这应该适用于Pharo、VisualWorks和GemStone。其他Smalltalk可能使用不同的方法名称。我不明白您想要什么;ClassB知道它的名字,所以它可以在符号前加上前缀…ClassA不必在意ClassB使用每个类的名称空间;ClassB知道它的名称,所以它可以在符号前加上它的前缀…ClassA不必关心ClassB是否使用每个类的名称空间。
ClassB doSomethingWith: 'myId' for: self.