[#1026] Is this a bug? — Dave Thomas <Dave@...>

18 messages 2000/01/03

[#1084] Infinite loop — Dave Thomas <Dave@...>

17 messages 2000/01/11

[#1104] The value of while... — Dave Thomas <Dave@...>

24 messages 2000/01/11

[ruby-talk:01137] Re: Factory of classes

From: matz@... (Yukihiro Matsumoto)
Date: 2000-01-13 17:13:28 UTC
List: ruby-talk #1137
Hi,

In message "[ruby-talk:01135] Factory of classes"
    on 00/01/13, David Suarez de Lis <excalibor@demasiado.com> writes:

|is there a way to create a class whose instances are classes themselves?

The built-in Struct class is a such example.

  Person = Struct.new("Person", :name, :age)
  john = Person.new("john", 34)

|like, say:
|
|class Factory
|    def new(name)
|        {|name| class name def new @var = nil end end}(name)
|    end
|end

How about the code like this.

  class Factory
    class <<Factory
      alias orig_new new
      def new
	klass = Class.new(self)
	def klass.new
	  orig_new
	end
	klass
      end
    end
  end

  Person = Factory.new
  John = Person.new

|So, any ideas? and then, how can I get delayed evaluation of variables (or metavariables, depending how you see it) so the compiler will let the  closure expand on run-time (if it is possible at all...)

In the code above, I didn't use any runtime expansion.  You can always
use eval for that purpose (with your own risk & responsibility).

|ps- as there's no ViM mode for Ruby, which would you say should fit it better? Perl? Eiffel? thx d@

ViM mode for Ruby?  Hmm, vi clones have language mode in these days.
# By the way, Ruby mode in Emacs works pretty fine.

							matz.

In This Thread