From: matz@... (Yukihiro Matsumoto) Date: 1997-04-08T13:29:27+09:00 Subject: [ruby-list:2677] Re: [Req] alias for singltone method まつもと ゆきひろです. 今回,(また)大幅な変更の提案をします. In message "[ruby-list:2625] [Req] alias for singltone method" on 97/04/05, Keiju ISHITSUKA writes: | |けいじゅ@SHLジャパンです. | |現在, 個別オブジェクトに対するaliasってできないですよね? あるオブジェ |クトの特異メソッドやextendされたモジュールのメソッドに対してaliasをし |たい時に使いたいです. いろいろ考えてみました.現在,クラス/モジュールに対して行う 事のできる操作は (1) メソッド定義 (2) undef (3) alias (4) private/public (5) module_function (6) attr です.一方オブジェクト単位では1は特異メソッド定義,4は今回の make_method_{private,public}でできるようになりました. 残りの操作も行いたいというニーズは理解できます.しかし,なん かこうやってちまちまと追加して行くのはどうも面白くありません. んで,いっそのこと今まで避けて来た特異クラスを表に出してしま おうと思います. 具体的には以下のような構文を導入します. class << obj ... end この文の範囲内での操作は,objで指定したオブジェクトにだけ反 映されます.ですから,上の1〜6までの全ての操作を行う事ができ るようになります.この構文で操作されるクラスは「単一のオブジェ クトに対応する仮想的なクラスである」とします. これと同時にObjectクラスからmake_method_{private,public}を取 り除いて,Moduleクラスに{private,public}_class_methodを追加 しようと思います(機能は同じ). どうでしょう? まつもと ゆきひろ /:|) p.s. 前田さんのFAQにすでにmake_method_{private,public}が含まれて いるので心苦しいのですが….