From: Logan Capaldo Date: 2006-09-05T21:43:59+09:00 Subject: Re: Does an instance know his own name? On Sep 5, 2006, at 8:30 AM, Timothy Goddard wrote: > You can identify an object by its object_id. Variables are just > references to an object with a convenient name for your use. If you > want to give an object an actual name, you have to pass it in as a > parameter on construction. > > Geoff Barnes wrote: >> If a class has built checks and raises an exception if it finds >> something wrong, how can I tell which instance had the error? I know >> there's an object_id, but can I know the name of the objects own >> instance variable? >> >> huey = Nephew.new >> duey = Nephew.new >> luey = Nephew.new It is sort of possible to find out someone's name. The following of course, is easily breakable. % cat names.rb class Nephew def name(&block) names_objects = eval("local_variables.inject({}){ |h, k| h[k] = eval(k); h}", block) names_objects.find { |k, v| v.object_id == object_id }.first end end huey = Nephew.new duey = Nephew.new louie = Nephew.new puts huey.name{} % ruby names.rb huey