From: Robert Klemme Date: 2006-03-17T02:38:47+09:00 Subject: Re: Evaluating the string in a variable to use as a method name "heinous (sent by Nabble.com)" wrote in message news:3440567.post@talk.nabble.com... > > This may be a more generic Ruby question, so I'm going to ask on the Ruby > forum, but I'm trying to figure out if there is a way to pass in the > string > value of a variable as the name of a method. > > For example, I would like to do something like: > > def sort_obj_by_uid(objects,@attr) > @tmparray = Array.new > @tmphash = Hash.new > for object in @objects > if ! @tmphash.has_key?(object.@attr.to_s) > @tmphash[object.@attr.to_s] = Array.new > end > @tmphash[object.@attr.to_s].push(object) > end > end You cannot use @attr, @attr is reserved for instance variables. Also, it's a bad idea to use instance variables (@tmparray, @tmphash) as temporary variables. > Where the method name is the @attr value. It's a one liner: objects.sort_by {|o| o.send(attr)} Kind regards robert