From: matz@... (Yukihiro Matsumoto) Date: 2002-08-15T23:53:25+09:00 Subject: [ruby-dev:18021] Re: allocation framework まつもと ゆきひろです In message "[ruby-dev:18004] allocation framework" on 02/08/13, Tanaka Akira writes: |In article <1029229143.399680.2549.nullmailer@picachu.netlab.jp>, | matz@ruby-lang.org (Yukihiro Matsumoto) writes: | |> allocateの問題だけは解法が思いつかない。 | |まず、あるクラスからそのクラスの構造の型を得ることは基本的には次のよう |にして可能だという気がします。 | |class Class | def builtin_type | ancestors.each {|c| | next unless Class === c | s = class << c; self end | return c if s.instance_methods.include? "allocate" | } | return Object | end |end | |もし、これで型を得られるのであるとすれば、各 allocate は自分が生成する |型と、self (klass) のあるべき型が一致することをオブジェクト生成前に確 |認することができます。 | |で、alias への対策は上記の実装が動かなくなることを禁止するよう、クラス |の特異メソッドとしての allocate への alias を禁止すればいいんじゃない |かと思います。 | |むろんナイーブにやると遅いでしょうが、原理的な話としてはどうでしょう? |甘いですかね? 理屈としてはできそうに思います。しかし、これだけいろいろ起き るとallocation frameworkそのものが間違いだったような気もして きます。あおきさん辺りがぎゃっと言いそうだけど。 もうちょっと違うアプローチもあり得るかも。 まつもと ゆきひろ /:|)