I'm trying to do something similar to the Camping 'R' class generator.
Can anyone explain to me how to get the following to print out from the
program below:

     param is p and arg is this is a P
     param is q and arg is this is a Q

(basically I want to capture the argument to the maker functions inside
the class they generate).

---- cut here --- cut here --- cut here ---

## Using this function causes a blank after "arg is"
def maker1(thearg)
  Class.new do
    @arg = thearg.dup
    def self.argval
      @arg
    end
    def doit(param)
      puts "param is #{param} and arg is #{self.class.argval}"
    end
  end
end

## Using this function causes the same value to be printed out for all
classes
def maker2(thearg)
  Class.new do
    @@arg = thearg.dup
    def doit(param)
      puts "param is #{param} and arg is #{@@arg}"
    end
  end
end

## using this function causes a undefined 'local variable or method'
def maker3(thearg)
  Class.new do
    def doit(param)
      puts "param is #{param} and arg is #{thearg}"
    end
  end
end

# change maker1 to maker2 or maker3
class P < maker1 'this is a P'
  def something
    doit('p')
  end
end

# change maker1 to maker2 or maker3
class Q < maker1 'this is a Q'
  def something
    doit('q')
  end
end

P.new.something
Q.new.something
-- 
Posted via http://www.ruby-forum.com/.