[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends:00498] Re: Java プログラマーのための Perl 入門 ?



前橋です。

yasuyuki さんは書きました:
>私が主題にしていたのは Java ではなく、
>「クロージャーが存在する言語では"Javaのメソッドオーバーロード"相当の
>ことが動的なディスパッチで可能である」と言いたかったわけです。

クロージャーと何の関係が?

>「CLOSでは"Javaのメソッドオーバーロード"相当の
>ことが動的なディスパッチで可能である」と言いたかったわけです。

ということなら、その通りです。私が
>えんどうさんが
>Javaのメソッドオーバーロード程度のものを欲しがっているのなら、
>CLOSはその要件を満たしているでしょう。

と書いたのはまさにそういうことです。

>> Javaのメソッドオーバーロードの用途は、
>> 「メソッドの名前を色々考えなくてよくて嬉しいな」というものでしかなく、
>> 「型情報によるディスパッチ機構」ではありません。
>
>了解しました。

と、これで了解が取れてるんならそれでよさそうなもんですが。

>なぜ決定的にダメなのかが分かりません。もう少し実例を示していただけませんか?

本当に了解してますか?

まず、abstractクラスであるShapeを継承して、Point, Line, Curve, Arc
といったクラスが存在するとします。

んで、今ここに、

Shape[] shapes;

という配列があって、この中にPointやらLineやらCurveやらArcやらが
ごちゃごちゃに詰まっていて、「shapesの中身全部を描画したい」と
考えたとします。

>> |  void draw(Point);
>> |  void draw(Line);
>> |  void draw(Curve);
>> |  void draw(Arc);
>> |
>> | こういうのではだめですか。

だめでないと思うなら、「こういうの」で上記の問題をどう書くか、
是非教えてください。具体的なコードで。


------------------------------------------------------------
  前橋 和弥                        PXU00211@xxxxxxxxxxx
                                   http://kmaebashi.com
------------------------------------------------------------