Hello --

I'm trying to hone my skills at manipulating classes and methods.  The
following example/question is taken in isolation from a current
project.

The idea is to pass a string to FirstStage#new, and get back a Class
object.  Instances of that second class then do things (#showstuff)
which have knowledge of the words in that original string.

The way I'm doing it right now feels a bit awkward.  I'm wondering if
there's a nicer way to get a dynamically-created class to be able to
see and use variables from the instance that's creating it (as opposed
to using class variables in a quasi-global-variable way, which is what
I'm currently doing).

Here's the little example:

----------------------------------------------------
   class FirstStage

     attr_accessor :words

     def initialize(s)
       @@w = s.split
       def FirstStage.words         # Is this the only way to
	 @@w                        # make the thing visible
       end                          # in another class's context?
     end

     def second_class
       c = Class.new
       c.class_eval <<-EOE

       attr_accessor :stuff

       def initialize
	 self.stuff = FirstStage.words    # Namely, right here.
       end
       
       def showstuff
	 self.stuff.each do |t|
	   puts t.upcase
	 end
       end

       EOE

       return c
     end

   end


# Test run

   f = FirstStage.new("These are some words")
   s = f.second_class
   p = s.new
   p.showstuff  #  THESE\nARE\nSOME\nWORDS\n

-----------------------------------------------------------


Thanks for any pointers --


David

-- 
David Alan Black
home: dblack / candle.superlink.net
work: blackdav / shu.edu
Web:  http://pirate.shu.edu/~blackdav