From: Robert Klemme Date: 2005-09-24T23:21:40+09:00 Subject: Re: OpenClass Doug Kearns wrote: > On Sat, Sep 24, 2005 at 04:41:40PM +0900, Robert Klemme wrote: > > > >> I don't see the advantange of this syntax over >> >> def o.test_method() puts "test_method" end >> >> Can you explain? > > Well, I guess it lets you do something like: > > name = "Robert" > o = OpenClass.new > o.test_method = %{ puts "Hello #{name}" } > o.test_method >> class Foo;end => nil >> f = Foo.new => # >> name = "robert" => "robert" >> class <> name } } => # >> f.test_method robert => nil Not shorter or nicer but syntax checked on compile time. It's usually better to try to avoid eval (some $SAFE levels even forbid eval if I'm not mistaken). You can easily put the code above into a helper method in class Module so this becomes more convenient. Kind regards robert