On Monday 10 February 2003 05:26 pm, Chris Pine wrote: | Hello, | | I ran across the following and was just curious as to why this doesn't | work? (Just in case you're wondering why I'm asking all of these | super-obscure questions, I'm giving a presentation at our RUG tonight, and | I just wanted to make sure I knew... well, everything.) | | irb(main):002:0> x = 5 | => 5 | irb(main):003:0> def x.foo; 'foo'; end | TypeError: can't define singleton method "foo" for Fixnum | from (irb):3 | | | So what am I doing wrong? | | Chris As I understand it, the problem is that due to speed/convenience concerns, fixnums have 'immediate value' and are not a reference to an object... Maybe the following output from 'ri' will make more sense: Fixnum objects have immediate value. This means that when they are assigned or passed as parameters, the actual object is passed, rather than a reference to that object. Assignment does not alias Fixnum objects. There is effectively only one Fixnum object instance for any given integer value, so, for example, you cannot add a singleton method to a Fixnum. Hope that helps-- // Bruce -- Bruce R. Williams :: [iusris/#ruby-lang] :: http://www.codedbliss.com 'It does not require a majority to prevail, but rather an irate, tireless minority keen to set brush fires in people's minds.' -- Samuel Adams