From: matz@... (Yukihiro Matsumoto) Date: 1998-03-12T17:49:54+09:00 Subject: [ruby-dev:1737] Re: new coerce [Re: coerce] まつもと ゆきひろです In message "[ruby-dev:1736] Re: new coerce [Re: coerce]" on 98/03/12, 石塚圭樹 writes: |>|または, Comparableのように, Calculatable(?)みたいなモジュールを導入す |>|るというのも奇麗ですけどね. |> |>という形でしょうね. | |まあ, そちらの方が奇麗ですし, Mix-inとしても典型的な利用法ですよね. この場合 Calculatable ってのが妥当なモジュール名なんですか? |きっとcoerceの名前を変えろっていうことでいいのかな? まあ,だいたいそんな感じですね. x, y = self.coerce(other, op) x.send(op, y) までは受け入れられるんですけど, x, y, op = self.coerce(other, op) x.send(op, y) と演算子まで取り換えるのは「型変換」の範疇を越えていると思い ます. |とはいえいい名前が思い浮かばないなあ... | | convert_operator(other, op) | |あとは, | | delegate_operator(other, op) | |をこっちの意味にして, もとのdelegate_opは | | unknown_operation(op, other) | |というのは? (引数も入れ換えています). うーん,convert_operator(仮称)は演算子を変換しているわけでは ないのではないですか? いや,ごくまれに変換する場合はあるか も知れないけど,ほとんどの場合は型を変換するだけでしょう? んで,演算子によって変換の仕方が変わる場合があると. # 人のアイディアにケチをつけるだけってのはあまりにも簡単で申 # し訳ないんですけど ^^;;; |話しはかわりますが, | | Caluculatable::delegate_op(other, op) | |の呼び出しで, opを省略して, delegate_op側でどの演算子だったか分かるこ |とはないですよねえ? Cレベルなら調べる方法はあります.