From: matz@... (Yukihiro Matsumoto) Date: 1998-03-12T16:03:27+09:00 Subject: [ruby-dev:1727] Re: new coerce [Re: coerce] まつもと ゆきひろです In message "[ruby-dev:1718] new coerce [Re: coerce]" on 98/03/12, Keiju ISHITSUKA writes: |けいじゅ@日本ラショナルソフトウェアです. | |新coerce案を検討します. 三つの案が提示されていますが, |というわけで[新案2]ぐらいが妥当かと思うのですが, いかがでしょう? ということですので,案2についてだけ検討します. |[新案2] |呼出側では直接coerceを呼ぶのではなくて演算を代わりにやってくれる以下の |ような別メソッドを導入し: | |class Object | def delegate_op(other, op) | x, y, op2 = coerce(other, op) | if op2 | x.send(op2, y) | else | x.send(op, y) | end | end |end | |と定義して, | |class Fixnum | def *(other) | case other | ... | else | other.delegate_op(self, :*) | end | end |end | |と呼び出せるようにするのはいかがでしょう? この場合 delegate_op は各オブジェクト毎に再定義されるべきも のなのですか? なんとなく Numeric の private メソッドとして 定義されてるだけで良いようにも思うのですが. |この案でちょっと気になるのは, elegate_opがObject/Kernelにないと困るっ |てことですかね... 現在の coerce と同様 Numeric だけが持ってれば良いと思うので すが,違うのかな? |互換性については, これを使っている人はruby内部と私が作ったモジュールだ |けだと思いますので(多分ですが(^^;;;), 手間はかかりますが互換性に関して |はあまり気にしなくて良いと思います. すくなくとも私には大問題です ^^;;; まつもと ゆきひろ /:|)