From: rubikitch Date: 2006-09-14T13:26:47+09:00 Subject: [ruby-list:42805] Re: 変数の存在を調べる方法 From: 山崎雄介 Subject: [ruby-list:42804] 変数の存在を調べる方法 Date: Thu, 14 Sep 2006 12:04:30 +0900 るびきちです。 > Rubyでオブジェクトや変数の存在を調べる方法を探しているのですが、 > 見つからないので質問させて下さい。 けっこうトリッキーですが可能です。 この例でみてみましょう。 Foo = Struct.new(:val) a = Foo.new(1) b = Foo.new(2) > Tcl/Tkで変数の存在を調べる > info exists "variable_name" > => 1 puts local_variables ["a", "b"] puts local_variables.include?("a") true > [Incr Tcl] あるクラスのオブジェクトを全て含むリストを得る > find objects ::className::* > => {::className::object1 ::className::object2 ::className::object3} require 'enumerator' puts ObjectSpace.enum_for(:each_object, Foo).to_a # # ObjectSpace.each_object(klass) は該当クラスのインスタンスそれぞれにおいてブロックを実行します。 インスタンスのリストを得るために enum_for と to_a で配列を作成しています。 -- rubikitch http://www.rubyist.net/~rubikitch/