Rubyリファレンス: Home

private_instance_methods (Module)

Edit   History

標準クラス・モジュール > Module > private_instance_methods

mod.private_instance_methods(all = true)

private_instance_methodsメソッドは、クラスやモジュールで定義されているprivateなインスタンスメソッドの名前を集めて配列にして返します。

配列には親クラスやインクルードしているモジュールのメソッドも含まれます。引数にfalseを指定すると、そのクラスやモジュールで定義されているメソッドだけが返ります。

Ruby 1.9 Ruby 1.8では配列中のメソッド名は文字列ですが、Ruby 1.9ではシンボルになりました。

次の例のinitializeメソッドは自動的にprivateになるので、private_instance_methodsの結果に含まれます。

class Book
  attr_accessor :title
  def initialize(title)
    @title = check_title(title)
  end
  
  private
  def check_title(title)
    title = title.to_s
    raise "too long!" if title.size > 100
    title
  end
end
 
p Book.private_instance_methods(false)
p Book.private_instance_methods.sort[0, 5]
["initialize", "check_title"]
["Array", "Float", "Integer", "String", "__method__"]  (Ruby 1.8の場合)
[:initialize, :check_title]
[:Array, :Complex, :Float, :Integer, :Rational]        (Ruby 1.9の場合)

この例のArrayFloatは、Bookクラスの親であるObjectがインクルードしているKernelprivateメソッドです。

関連項目