Robert Klemme
3/16/2006 5:38:00 PM
"heinous (sent by Nabble.com)" <lists@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