我正在学习Squeak,我想知道是否有一种方法可以"存储"要发送到对象的消息。
例如,我希望能够做到以下几点:
Delegator>>performWith: arg
|target method|
target := MyObject new.
method := #myMethod. "Not sure what goes here"
target sendMessage: method withArgs: arg. "Or how this call would work"
另一种方法是在块中指定目标和方法。然而,使用上述方法是可能的吗?
也许我误解了你的问题,但你几乎猜到了答案:将此消息发送到您的"目标":
执行:aSymbol with:anObject
或:
performance:aSymbolwithArguments:aArrayOfArguments
在您的示例中:
目标执行:方法带有:arg
您也可以尝试使用MessageSend对象的实例。
msg := MessageSend receiver: target selector: #myMethod arguments: #(arg1 arg2).
msg value. "sends the message to it's receiver"
MessageSend可以按原样使用。Squeak、Pharo等使用MessageSend作为MorphicAlarm的基类,可以将消息的执行延迟到将来的某个时间。
编码快乐!