From: Meinrad Recheis Date: 2003-05-08T14:48:58+09:00 Subject: Re: access a variables name? Mauricio Fern�ndez wrote: [...] >batsman@tux-chan:/tmp$ expand -t2 ac.rb > >class Foo > def iv_name(iv) > instance_variables.each do |x| > return x if instance_eval(x).id == iv.id > end > nil > end > > def dump(var, subst = false) > name = iv_name(var) > return name if name && subst > case var > when Array > "[" + var.map {|x| self.dump(x,true)}.join(",") + "]" > when Hash > "{" + var.map {|k, v| self.dump(k,true) + "=>" + > self.dump(v,true)}.join(",") + "}" > else > var.inspect > end > end >end > >file = <<-EOF >@var1 = [1,2] >@var2 = {1=>@var1} >@var3 = {@var1 => @var2} >EOF > >someobj = Foo.new >someobj.instance_eval file > >puts "Reconstructed file:" >someobj.instance_variables.sort.each do |x| > repr = someobj.dump(someobj.instance_eval(x)) > puts "#{x} = #{repr}" >end > > > thank you, that s very helpful. >batsman@tux-chan:/tmp$ ruby ac.rb >Reconstructed file: >@var1 = [1,2] >@var2 = {1=>@var1} >@var3 = {@var1=>@var2} > > [..] - m.r.