作者: 機械伯爵
日時: 2002/3/30(23:56)
   頭がモールディな機械伯爵です。

> Python にもあるみたいです。(機能は違うかも知れない…)

 ないない(汗)

 Pythonには、組み込みフックメソッドとして、__add__と__radd__
のようなペアがあるだけです。

 つまり、class Aで__add__を実装すると、A+Xの処理の仕方(ふるまい)
が定義でき、__radd__を実装すると、X+Aのふるまいが定義できるだけです。

 Rubyと異なり、逆も定義できるので、非常に分かりやすいけど、反面、
どう見てもスマートじゃないですわな(当然、XがAの中の定義と矛盾すれ
ばエラーを発生します)。

> 例がないと、Python の演算定義が簡単で Ruby のが難しいと
> 納得できないのですが…。(それほど大差ないのではと思っていました)

 それに対し、Rubyは暗示的キャストを再帰的に行っているような感じです
から、エラーはPython式より少ないですけど、一体どこに落ちつくのか、
コーディングしてるときにわからないのが、ちょっと気になります。

 振る舞いのルールが複雑に見えるのは、私が多分初歩のアルゴリズムの
セオリーを知らないからだと思いますけどね・・・それにしてもなぁ・・・

   機械伯爵