2013-08-10 26 views
5

Squeak'ı öğreniyorum ve bir nesneye gönderilecek bir iletinin 'saklanmasının' bir yolu olup olmadığını merak ediyorum.Smalltalk temsilci seçme/kaydetme mesaj seçicileri

Örneğin aşağıdaki yapabilmek istiyorum:

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" 

alternatif bir yaklaşım hedef ve bir blokta yöntemi hem belirtmek olacaktır. Ancak yukarıdaki yaklaşımı kullanarak yapmak mümkün mü?

cevap

4

Belki ben sorunuzu yanlış, ama neredeyse cevabını tahmin: senin "hedefe" Bu mesaj gönder:

gerçekleştirin: aSymbol ile: birNesne

ya:

gerçekleştirin: aSymbol withArguments: anArrayOfArguments

Örnekte

: yöntemi ile:

hedef gerçekleştirmek Ayrıca MessageSend nesnesinin bir örneğini kullanmayı deneyebilirsiniz

+0

Ahh İşlem mesajının farkında değildim. Teşekkürler – ahjmorton

4

arg.

msg := MessageSend receiver: target selector: #myMethod arguments: #(arg1 arg2). 
msg value. "sends the message to it's receiver" 

MessageSend olduğu gibi kullanılabilir. Squeak, Pharo, vb. MessageSend'i, MorphicAlarm için temel sınıf olarak kullanır - ki bu, iletinin yürütülmesini gelecekte belirli bir zamana kadar ertelemek için kullanılabilir. kodlama

Mutlu!