[#42835] RubyインストールしたがTKがインストール出来ない — "Kazutomi Ueda" <kazuto@...>

初めまして上田と申します。

16 messages 2006/09/28
[#42837] macosxでRubyインストール 塰 でエラー — 上間 つよし <mugenkai15@...> 2006/09/28

はじめまして

[ruby-list:42805] Re: 変数の存在を調べる方法

From: rubikitch <rubikitch@...>
Date: 2006-09-14 04:26:47 UTC
List: ruby-list #42805
From: 山崎雄介 <y-yamasaki@saeilo.co.jp>
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 
#<struct Foo val=2>
#<struct Foo val=1>


ObjectSpace.each_object(klass)
は該当クラスのインスタンスそれぞれにおいてブロックを実行します。
インスタンスのリストを得るために enum_for と to_a で配列を作成しています。

--
rubikitch
http://www.rubyist.net/~rubikitch/

In This Thread