前田です。

中村暁史 <anakamur / exa.i-tech.co.jp> writes:

> つまり、「メソッドを定義するメソッド」というものが作れるかどうか
> という所になるのかな。無論delphiじゃそんな賢い(^^;こと出来ないし。

この辺はダイナミックな言語ならではの機能ですよね。

> ->obj.attr = ...
> ->と書きたいだけであれば、それこそsyntax sugarでよいわけですから、やは
> ->りコンポーネントを意識した仕様だと考えるのが自然ではないでしょうか。
> 
> 逆にいえば、砂糖でしかない(?)場合、コンポには適用できないんでしょうか?
> かっこよくはないけどjava beansが、まさにそれに対する答えになっちゃって
> いるような気がします。

その辺を意識して、

> 逆にこのような仕組みがない場合はJava Beansみたいにプロパティの登録手
> 続きが別途必要になってきてちょっと面倒ですよね。

ということを書きました。
例えば、Rubyの場合、read onlyな属性のアクセスメソッドと、Array#sort
のような副作用のためのメソッドは文法的には区別が付かないので、プロパ
ティを指定するのに別の手続きが必要になりますよね。
RubyならModuleにメソッドを追加すればスマートにできそうですけど、
DelphiみたいなPascalベースの言語ではそういうわけにもいかないでしょうし。

> でも.と->の使い分けはC(++)のそれを厳守してるもんだから
> 参照ベースのオブジェクト配置しか許してないdelphi世界を模倣するために
> オブジェクトを使う側のソースも矢印まみれ…(^^;

C++でオブジェクトをヒープに割当てる手法を使ってるとすぐメモリリーク
になっちゃいますよね。
# C++ hackerならそんなことはないんでしょうけど。

-- 
前田 修吾