まつもと ゆきひろです

In message "[ruby-list:6565] Re: Counter class [Re: i++ ]"
    on 98/02/20, toyofuku / juice.or.jp <toyofuku / juice.or.jp> writes:

|  豊福@パパイヤです。

|	x = Var(2)
|	y = Var(3)
|	z = x * y

もとのクラスの意味づけが良く分からないのですが(実行したメソッ
ドの戻り値を保持する?),オブジェクトをラップするだけでした
ら delegate.rb の SimpleDeleator が使えるんじゃないかと思い
ます.

      x = SimpleDeleator.new(2)
      y = SimpleDeleator.new(3)
      z = x * y

|  coerce がよくわかってないのですが、これで
|	z = x ** y    # z = 2 ** 3
|とすると 9.0 になってしまいます。

通常互いに計算できる相手に対してcoerceが呼ばれることは仮定し
ていないので Numeric のデフォルトは Float に変換しているんで
す.もうちょっと考えた方が良いのかなあ.

|when Var のところに
|来ません。Var(1) === Var も真にならないよう
|ですがどこらへんがあやしいでしょうか。

まず,===の比較ではクラス/モジュールが前に来ます.
あとは coerce 関連のいろいろややこしいことが関係しているんで
しょうか? 一番問題そうなのは

|  def method_missing(*args)
|    @obj = @obj.send(*args);
|  end

メソッドを呼び出す度に自分の状態が変化してしまうことですね.

                                まつもと ゆきひろ /:|)