2013-08-10 4 views
5

私はSqueakを学んでいます。オブジェクトに送信するメッセージを「保存」する方法があるかどうかは疑問でした。例えばSmalltalk委任/メッセージセレクタの保存

Iは、次の操作を実行できるようにしたい:

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" 

別のアプローチは、ターゲットブロック内の方法の両方を指定することであろう。しかし、上記の方法を使用することは可能ですか?

答えて

4

まあ、多分私はあなたの質問を誤解していますが、ほとんどの答えを推測: は、あなたの "ターゲット" にこのメッセージを送る:

は実行します。anObject

か:

とのasymbolを

は行いますのasymbol withArguments:anArrayOfArguments

をあなたの例では

ターゲットが実行します。メソッドをして:

+0

私は実行メッセージを知らなかった。ありがとう – ahjmorton

4

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の基本クラスとして使用します。これは、将来の特定の時間までメッセージの実行を遅らせるために使用できます。

ハッピーコーディング!