From: Hugh Sasse Date: 2007-04-05T02:14:49+09:00 Subject: Re: Why limit class def to a constant or colon node? On Thu, 5 Apr 2007, Chris Carter wrote: > On 4/4/07, Hugh Sasse wrote: > > Also makes me think: what about non-anonymous singleton classes? > > > > irb(main):002:0> class X << x > > irb(main):003:1> def hello > > irb(main):004:2> puts "hi" > > irb(main):005:2> end > > irb(main):006:1> end > > SyntaxError: compile error > > (irb):2: syntax error, unexpected tLSHFT, expecting '<' or '\n' or ';' > > class X << x > > ^ > > from (irb):6 > > from :0 > > irb(main):007:0> > > > > Fair enough! :-) That would produce some weird prototype based OO > > if it were allowed, though. [...] > > Hugh > > > > > > Intrestingly, you can do things like this: > > > a = Object.new > => # > > > b = class < > > attr_accessor :name > > > self Nice! I never thought of that. > > > end > => #> > > > b > => #> > > > A = b > => #> > > > A > => #> > > With singletons. Which allows you to do things like: > > > ObjectSpace.each_object(A) { |a| p a } > # > => 1 to golf that: irb(main):006:1> A = class << a irb(main):003:1> attr_accessor :name irb(main):004:1> self irb(main):006:1> end > > -- > Chris Carter > concentrationstudios.com > brynmawrcs.com > Hugh >