作者: HIDAKA Takahiro
日時: 2002/3/26(07:28)
 ひだかです。

 Ruby はわかるつもりだけど演算子再定義はほとんど
したことがないです(^_^;

kikwai@... (機械伯爵) wrote:

>  ども、機械です。

>  Rubyで簡単に出来るというのは初耳だったので、Ruby教典を
> 調べてみました。
>  う〜ん、Rubyでは、たとえば・・・
>  A + B
>  を定義しようとすると、かならずBの側で定義する必要があるよ
> うですね。

 普通 A のほうに定義すると思うんですが。

>  よって、Bが組み込みオブジェクトだと面倒らしく、そのために
> 特殊なルールがあるみたいですね。

 これは何の話でしょう? coerce かな?

> > 演算子の再定義(多重定義?)に関しては、
> > 1. C++ だとなぜ良く分からなくなってしまうのか?
>  私は、今言いました通り、プライベートフィールドへのアクセスの話がセットで
> でてくるので、必要以上にややこしくなってるんじゃないか、と思ってます。

 それよりも、もっと面倒なのは暗黙の型変換のせいじゃないでしょうか?

>  なぜなら、演算子はその名の通り「Operator(操作するもの)」であり、
> オブジェクトの振る舞いはオブジェクト自身が知っていて自発的に働く、と
> いう、オブジェクト指向主義の大原則とはあまり相性が良いとは思えません。

 どちらかというと、演算子は可換であることが期待されたりするのに、
片方のオブジェクトが主体にならざるを得ない点が、純粋オブジェクト指向と
相性が悪いと言えるかもしれません。

 でも逆にいうと、演算子の可換性を宣言することができれば、
純粋オブジェクト指向+演算子をちゃんとミックスした言語が
作れそうな気もします。深く考えていませんが。

-- 
ひだかたかひろ  cv8t-hdk@...-net.or.jp