From: Simon Kaczor Date: 2011-03-25T04:20:30+09:00 Subject: Re: Dynamically calling a certain set of methods You can save yourself some CPU cycles by pre-compiling the list of available methods as a class instance variable: class Mutating ... @mutations = instance_methods.grep(/Mutation$/) class << self attr_reader :mutations end def mutation send(self.class.mutations.sample) end end Simon >> First of all you can save typing by removing "self.". Then you should >> replace #shuffle![0] with #sample: >> >> send(methods.select!{|element| element.to_s.end_with?("Mutation")}.sample) >> >> If you like you can strip this down even further by using regular >> expressions because those happen to work with Symbols as well: >> >> send(methods.grep(/Mutation\z/).sample) >> >> :-) >> >> Kind regards >> >> robert >> >> -- >> remember.guy do |as, often| as.you_can - without end >> http://blog.rubybestpractices.com/ >> > >