今新しい言語を作ってます
■ このスレッドは過去ログ倉庫に格納されています
0348デフォルトの名無しさん
NGNGとりあえず説明用に以下のことを前提とします。
1.Fooというオブジェクトがある。
2.オブジェクトFooには、Barというメソッドがある。
3.グローバル変数Barがあり値は1である。
CLOSで書けば、こんな感じ↓
(defclass Class-Foo () ())
(defmethod Bar ((Foo Class-Foo)) (print "method bar"))
(setq Bar 1)
(setq Foo (make-instance 'Class-Foo))
(Bar Foo) ;; => "method bar"
で、>>342で問題にしているのは、上のCLOSの例で言えば、
(Bar Foo) が メソッドBarを検索する前に、
(1 Foo) という式に変換されてしまうということです。(グローバル変数Barの値が1だから)
で変換された後では、Barというシンボル(メソッド名)は
失われてしまうので、メソッドBarが呼び出されることはない
というお話です。なので、メソッドがどこに属しているか
という話とは、あまり関係がないと思われます。
■ このスレッドは過去ログ倉庫に格納されています