From: Shin-ichiro HARA Date: 2002-11-01T14:05:12+09:00 Subject: [ruby-dev:18614] Re: private_method_defined? 原です。 >まつもと ゆきひろです シアトルで「プログラミング言語界のイチローです。」と挨拶しない ように。:-) >もう現状をコミットしちゃいました。 > > * method_defined?は現状のまま > > * public_method_defined?, private_method_defined?, > protected_method_defined? を追加 > > * Object#methods, Module#instance_methodsはpublicメソッド > とprotectedメソッドを返す > > * Objectにpublic_methods, private_methods, > protected_methodsの各メソッドを追加 > > * Moduleにpublic_instance_methods, > private_instance_methods, protected_instance_methodsの各 > メソッドを追加。 ふーむ。まとめると、 defined? 系は public_defined? 系と異なり protected を含む methods 系は public_methods 系と一致し、protected を含まない という事ですね。表にすると protectedを含む privateを含む superクラスを含む defined? O O O respond_to?* O X O methods X X O public_methods :同上 protected_methods O X O private_methods X O O method_defined? O X O public_method_defined? X X O protected_method_defined? O X O private_method_defined? X O O instance_methods* X X X instance_public_methods* :同上 instance_protected_methods* O X X instance_private_methods* X O X (* はオプション無しの場合) かな。 互換性を維持するという条件の下で極大な整合性を持ってはいますね。