新井です。

In message "[ruby-list:38525] Re: Object#instance_eval and private"
  on 13 Oct 2003 04:03:26 +0900,
  Koji Arai <JCA02266 / nifty.ne.jp> wrote:
> 新井です。
> 
> In message "[ruby-list:38524] Object#instance_eval and private"
>   on 13 Oct 2003 02:57:06 +0900,
>   Masao Mutoh <mutoh / highway.ne.jp> wrote:
> > むとうです。
> > 
> > Object#instance_eval()を使って定義したメソッドをprivate
> > にしたいのですが、そのようなことはできますでしょうか。

1.8 ならこういうのもありですね。

class Test
   def initialize(m)
     eval("class <<self;" + m + ";end")
   end
   private
   def baz
     p "baz"
   end
end

a = Test.new(%Q[
    def hoge
      p "hoge"
    end

    private
    def foo
      p "foo"
    end
])
p a.private_methods(false)

# => ruby 1.8.0 (2003-10-10) [i586-linux]
     ["initialize", "baz", "foo"]

--
新井康司 (Koji Arai)