けいじゅ@日本ラショナルソフトウェアです.

In [ruby-list :06571 ] the message: "[ruby-list:6571] Re: Counter
class [Re: i++ ] ", on Feb/20 16:07(JST) Yukihiro Matsumoto writes:

>まつもと ゆきひろです
>
>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 に変換しているんで
>す.もうちょっと考えた方が良いのかなあ.

たぶん, coerceのやり方を間違っていただけなので問題ないでしょう.

rubyのcoerceは一般的過ぎて使いこなすのが難しいんですが, こういうことが
できるのは素晴らしい? 

# Smalltalkのgenericityでは不可能ですしね.

>|  def method_missing(*args)
>|    @obj = @obj.send(*args);
>|  end
>
>メソッドを呼び出す度に自分の状態が変化してしまうことですね.

これ意味がわかるようでわからないですよね.

Varは変数クラスっていう感じでもないですよね.

__
................................石塚 圭樹@日本ラショナルソフトェア...
----------------------------------->> e-mail: keiju / rational.com <<---