2013-08-10 33 views
5

Tôi đang học Squeak và tôi đã tự hỏi liệu có cách nào để 'lưu trữ' một tin nhắn được gửi đến một đối tượng hay không.Smalltalk ủy quyền/lưu trữ bộ chọn tin nhắn

Ví dụ tôi muốn để có thể làm như sau:

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" 

Một phương pháp khác sẽ được xác định cả hai mục tiêu và phương pháp trong một khối. Tuy nhiên nó có thể làm bằng cách sử dụng phương pháp trên?

Trả lời

4

Vâng, có lẽ tôi hiểu lầm câu hỏi của bạn, nhưng bạn gần như đoán câu trả lời: Gửi thông điệp này đến "mục tiêu" của bạn:

thực hiện: aSymbol với: anObject

hay:

thực hiện: aSymbol withArguments: anArrayOfArguments

Trong ví dụ của bạn:

mục tiêu thực hiện: Phương pháp với: arg

+0

Ahh Tôi không biết thông báo thực hiện. Cảm ơn – ahjmorton

4

Bạn cũng có thể thử sử dụng một thể hiện của đối tượng MessageSend.

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

MessageSend có thể được sử dụng như hiện trạng. Squeak, Pharo, vv sử dụng MessageSend làm lớp cơ sở cho MorphicAlarm - cái mà người ta có thể sử dụng để trì hoãn việc thực hiện thông điệp cho đến một thời điểm nhất định trong tương lai.

Mã hóa vui vẻ!

Các vấn đề liên quan