Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。
Q&A
解決済
2回答
4213閲覧
総合スコア34
0グッド
0クリップ
投稿2014/10/14 11:55
0
Rubyでオブジェクトが持つインスタンス変数を調べたいのですが、 何かできる方法はありますでしょうか? どなたか知っている方いられましたら教えていただけないでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
質問へのコメント
回答2件
instance_variablesメソッドを使えばできます。
lang1class Sample 2def initialize(sample1) 3@sample1 = sample1 4end 5end 6
lang
1class Sample 2def initialize(sample1) 3@sample1 = sample1 4end 5end 6
sample = Sample.new("これはサンプルです" )
lang1p sample.instance_variables
1p sample.instance_variables
実行すると[:@sample]となります。
投稿2014/10/14 13:24
総合スコア251
ベストアンサー
すべてのクラスの基底クラスである Object クラスに instance_variables メソッドがあり、これでインスタンス変数名のシンボルを配列として取得することができます。
instance_variables
lang1class SomeClass 2 def initialize 3 @foo = "Hello" 4 @bar = 1 5 end 6end 7 8obj = SomeClass.new 9p obj.instance_variables # [:@foo, :@bar]
1class SomeClass 2 def initialize 3 @foo = "Hello" 4 @bar = 1 5 end 6end 7 8obj = SomeClass.new 9p obj.instance_variables # [:@foo, :@bar]
さらにその変数の値も欲しい場合は instance_variable_get メソッドを使います。
instance_variable_get
lang1obj.instance_variables.each {|sym| 2 puts("#{sym} = #{obj.instance_variable_get(sym)}") 3} 4# @foo = Hello 5# @bar = 1
1obj.instance_variables.each {|sym| 2 puts("#{sym} = #{obj.instance_variable_get(sym)}") 3} 4# @foo = Hello 5# @bar = 1
投稿2014/10/15 16:52
総合スコア863
回答へのコメント
2014/10/21 00:55
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
15分調べてもわからないことはteratailで質問しよう!
ただいまの回答率85.50%
質問をまとめることで思考を整理して素早く解決
テンプレート機能で簡単に質問をまとめる
Ruby インスタンス変数を調べるには?
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。