From: "David A. Black" Date: 2007-11-08T09:13:25+09:00 Subject: Re: alternate to case; generating a list of sub-classes Hi -- On Thu, 8 Nov 2007, Thufir wrote: > The below uses pseudo-random number generation to populate an array > with various monsters, all inherit from Creature. Can a list of > classes which inherit from Creature be generated automagically? There > must be a better technique to fill the array then the case > statement... > > > C:\code> > C:\code> > C:\code>type Driver.rb > require 'ArrayOfCreatures' > > require 'Creature' > require 'AssistantViceTentacleAndOmbudsman' > require 'Dragon' > require 'DwarvenAngel' > require 'TeethDeer' > > > > puts "\nquantity of creatures:" > numOfCreatures = gets.chomp.to_i > > > someCreatures = ArrayOfCreatures.new > > > 0.upto(numOfCreatures) do |i| > > creatureType = Kernel.rand(4) > > case creatureType > when 0 > someCreatures[i]=AssistantViceTentacleAndOmbudsman.new > when 1 > someCreatures[i]=Dragon.new > when 2 > someCreatures[i]=DwarvenAngel.new > when 3 > someCreatures[i]=TeethDeer.new > end > end > > someCreatures.toString Here's one possibility (untested): creatures = ArrayOfCreatures.new creature_classes = [AssistantViceTentacleAndOmbudsman, Dragon, DwarvenAngel, TeethDeer] puts "\nquantity of creatures:" num_of_creatures = gets.to_i num_of_creatures.times do |i| creatures[i] = creature_classes[rand(4)].new end David -- Upcoming training by David A. Black/Ruby Power and Light, LLC: * Advancing With Rails, Edison, NJ, November 6-9 * Advancing With Rails, Berlin, Germany, November 19-22 * Intro to Rails, London, UK, December 3-6 (by Skills Matter) See http://www.rubypal.com for details!