next up previous
Next: 15 Euslispのオブジェクト指向 Up: 14 オブジェクト指向機能の実現 Previous: 14.4 メソッドの探索

14.5 Sendの実現

Sendはインスタンスに対してメッセージを送るものである. インスタンスはクロージャですから,そのクロージャに 与えるべき引数を用意してfuncallすることになる.

(defmacro send (inst mess &rest args)
  `(funcall ,inst ,inst ,mess ,@args))
以上のようにクロージャによりオブジェクト指向のオブジェクトを 表現することが可能になっている. また,self変数はそのメッセージが最初に送られたオブジェクトを指す. それは,このクロージャの第一引数がselfという名前に なっていることで実現できている.

generated through LaTeX2HTML. M.Inaba 平成18年5月7日