前田です。

In message "[ruby-list:3996] Re: Object#id <=> Fixnum#id2object ? (Re: SyslogSendmail class)"
Yukihiro Matsumoto <matz / netlab.co.jp> wrote:

|ないのでそのままになっています.それはそうと,もともとの問題
|に関しては定数を経由することをお勧めします.

なるほど。
実はこんなことがしたかったのでした。

class Class
   def slot(name, default, writable = FALSE)
      attr name, writable
      if name.is_a? Fixnum
	 name = name.id2name
      end
      slot_initializer = Module.new
      slot_initializer.module_eval %{
	 DEFAULT = default
	 def initialize
	    super
	    @#{name} = DEFAULT
	 end
      }
      include slot_initializer
   end
end

class Foo
   slot :bar, ["bar"]
   slot :baz, /^baz/
end

foo = Foo.new
p foo.bar
p foo.baz


slotの呼び出し毎にモジュールが一個作られるという贅沢さ(^^;
rubyだとattr_accessorのたぐいもユーザーが簡単に定義できちゃいますね。
# 最近こんなのばっかりやってるような...。

-- 
前田 修吾