From: Shin'ya Adzumi Date: 2002-07-05T12:21:54+09:00 Subject: [ruby-list:35528] Re: [ 質問 ] オブジェクト名を得る方法 あづみです。 Fujimaru Hiroyasu wrote: > > 名前って変数名のことですよね。一言で言ってしまうと、無理です。 > > 正確に言うと、不可能ではありませんが手間とコストがかかるので > > 思うほど便利ではありません。 > > > >そういうことがしたくなるときは、たぶんハッシュなどで自前で > >管理をするほうがなにかといい結果になると思います。 > >  ここでかけるコストは問題にしていない(作成するインタフェースが良くなれば、 > 長期的に見てコストは回収できると思う)のですが、手間がかかるというのは、 > Rubyだけでは記述できないという事でしょうか? >  そういう事であれば、Rubyのソースを眺めてみます。 ソース関係なしにしても、 ary = ["a","b"] p ary[0].id # => 84004824 の場合の id が 84004824 のオブジェクトの変数名って何? という事に なりますし、さらに複雑なパターンでは ary = Array::new(2,"a") p [ary[0].id,ary[1].id] # => [84004740, 84004740] の場合の id が 84004740 のオブジェクトの変数名って何? という事に なるんじゃないかなと思います。 変数名が必要なオブジェクト o があるのであれば、 eval("id#{o.id} = o") みたいなのをどこかに入れて、84004824 のオブジェクトの変数名が id84004824 になるようにするとかした方が良いのではないでしょうか。 上記の方法は全然美しくないですけど。 安積伸弥 adzumi@denpa.org