web-dev-qa-db-ja.com

発見Rubyオブジェクトメンバー?

Rubyオブジェクトが公開するメソッド/プロパティを見つける簡単な方法は何ですか?

PowerShellで文字列のメンバー情報を取得する例として、次のことができます。

"" | get-member

Pythonでは、

dir("")

Rubyオブジェクトのメンバー情報を発見する簡単な方法はありますか?

39
Sung M. Kim
56
noodl

Rubyにはプロパティがありません。別のオブジェクト内のインスタンス変数にアクセスするたびに、メソッドにアクセスする必要があります。

16
Andrew Grimm

オブジェクトのメソッドを取得する2つの方法:

my_object.methods
MyObjectClass.instance_methods

Object基底クラスから継承されたメソッドのリストを整理するために私がやることは1つです。

my_object.methods - Object.instance_methods

オブジェクトの属性をリストするには:

object.attributes
11
Mark Thomas

これを使って:

my_object.instance_variables
4
Nimo

これを実現する方法は2つあります。

obj.class.instance_methods(false)、「false」はスーパークラスのメソッドを含まないことを意味するため、たとえば次のようになります。

class Person
  attr_accessor :name
  def initialize(name)
    @name = name
  end
end

p1 = Person.new 'simon'
p1.class.instance_methods false # => [:name, :name=]
p1.send :name # => "simon"

もう1つは:

p1.instance_variables # => [:@name]
p1.instance_variable_get :@name # => "simon"
4
sescob27
object.methods

オブジェクトのメソッドの配列を返します

2
Arnaud Le Blanc