前田です。 In message "[ruby-list:6872] Re: monitor.rb" 石塚圭樹 <keiju / rational.com> wrote: |>あと、Sync_m.includable_moduleでNameErrorだけでなくArgumentErrorも |>rescueした方がよいのではないでしょうか。 | |そうなんですか? 私も全パターンを調べたわけではないので... newの引数が複数の時はdummyを作るところでArgumentErrorが起きると思います。 Stringを継承したクラスで試した時に気づきました。 あと、sync.rbでappend_featuresがextend_classになってます。 # たしか石塚さんがクラスを引数に取るとは限らないから名前を変えた # 方がいいとおしゃっていたような(^^; |>monitor.rbでは特異メソッドにnewが含まれている時はPrimitiveなクラスと |>みなすことにしました。 | |Primitiveなクラスかどうかが問題なのではなくて, インスタンス変数が作れ |るかが問題だとは思うのですが... | |# そのうち, primitiveなクラスでもインスタンス変数が作れるようになるか |# も知れないし(^^;;; そうですね(^^; クラスがインスタンス変数を持てるかどうか調べるメソッドがあると便利ですね。 オブジェクトがインスタンス変数を持てるかどうか調べるのはinstance_evalで 試せばよいのですが、クラスの場合はちょっと面倒です。 結局普通にクラス定義する時はnewをオーバーライドすることはないので、newを オーバーライドしているクラスはCで書かれたインスタンス変数を持てないクラス とみなすことにしてしまいました。 -- 前田 修吾