From: keiju@... (ÀÐÄͷ½¼ù ) Date: 1996-10-08T12:38:30+09:00 Subject: [ruby-list:793] Re: ? for Object#extend けいじゅ@SHLジャパンです. In [ruby-list :00745 ] the message: "[ruby-list:745] Re: ? for Object#extend ", on Oct/04 14:00(JST) matz@caelum.co.jp (Yukihiro Matsumoto) writes: >でも,継承した時になんらかのメソッドが動くかというとそうでも >ないですしね. 動かないからこそ, 初期化したかったんですけどね... ># しかし,実は特異メソッドが定義された時には呼んでいる え? どんなメソッドが呼ばれるんです? 特異メソッドとexpandってほとんど変 わらないと思うのですが... >こういうhookは嫌いではないんですけど. でしょう(^^; >|モジュールのクラス変数(モジュール変数?)に入れているわけですね. >そうです.姑息というのはこの辺にあります. うーん. 納得しました... でも, rubyの標準技法(普通に定義できる範囲)から 離れているのでエレガントな実装とはいえないですねえ... >|インスタンスにextendする方法で問題になるのは, そのインスタンスでは[]= >|が使えなくなるか意味が変わってしまうというのがあります. だから, extend >|することによって, 元のクラスで定義されたメソッドが動作しなくなる可能性 >|があるんですね(^^;;; >|そう言うことを考えると, wrapperの方が良いかも知れません. > >Wrapperの問題はWrapperを介さずに元の配列を操作されちゃう可能 >性を否定できないところなんですけど,まあちゃんと制限として明 >記しておけば許されるかもしれませんね. これって, extendでは[]=が使えなくなるといった問題の逆の問題ですね. 元 クラスの[]=を再定義する特異メソッドを定義するオプションを用意するとい いのかな. >|> @cmp = lambda if defined? yield >|ここの文の意味が良く分かりません. >defined? yieldでイテレータとして呼ばれているかどうかが判定で >きます.iterator_p?と同じですね. ふーん. なるほど... >仕方ないと思います.今でもArrayのサブクラスを作ることができ >るのですが,例えばこれにインスタンス変数をアクセスするような >メソッドを含むモジュールをインクルードすることもできます.で, >実際にインスタンス変数にアクセスした時点で例外が発生するわけ >です. なるほど... >|ところで, fixnumにもextendできるようになるのですか? これは何となく無理 >|そうな気が... >むりです. まあ, こういう用途はあまりないとは思いますけどね. あったら, 作者にリク エストしてつくってもらうと(^^;; >Indexable(要素を整数で参照できる)やArrayLike(Indexableで,か >つ要素を置き換えられる)なモジュールも面白いとは思います.た >だ,今のrubyの使い方だとそういうのはクラスを作らず配列でやっ >ちゃう気が…. AP系では確かにそれはいえるんですけどね. rubyのライブラリ(クラス)を作ろうとする人にとっては, けっこう訳に立つの ではないかと思います. >メモリマップドファイルは昔から(前の会社にいるころから)いつか >やろうと思っているのですが,SysV系のIPCに弱いのでそのままに >なっています. いつか実装されることを期待して待っています. >p.s. >英語版ドキュメントのweb版は新しくしました.tarでまとめたもの >もすぐに用意します. ありがとうございます. # メイルが古くなって腐ってしまいました. (__;; __ .....................................石塚 圭樹@事開事.三井造船(株)... ------------->アドレス変わりました!! e-mail: keiju@csg.mes.co.jp <----