On Thu, 5 Apr 2007, Chris Carter wrote: > On 4/4/07, Hugh Sasse <hgs / dmu.ac.uk> 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 > => #<Object:0x13292e4> > > > b = class <<a > > > attr_accessor :name > > > self Nice! I never thought of that. > > > end > => #<Class:#<Object:0x13292e4>> > > > b > => #<Class:#<Object:0x13292e4>> > > > A = b > => #<Class:#<Object:0x13292e4>> > > > A > => #<Class:#<Object:0x13292e4>> > > With singletons. Which allows you to do things like: > > > ObjectSpace.each_object(A) { |a| p a } > #<Object:0x13292e4> > => 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 >