Apparently the last message did not go to the list.
---------- Forwarded message ----------
From: Robert K. [email protected]
Date: Fri, Nov 7, 2014 at 10:48 PM
Subject: Re: Top level methods are becoming singleton method as well
as instance method - Why ?
To: Arup R.
On Fri, Nov 7, 2014 at 6:24 PM, Arup R.
[email protected] wrote:
NoMethodError: private method
a' called for #<Object:0x007f8c5a150430> from (irb):4 from /Users/shreyas/.rvm/rubies/ruby-2.1.4/bin/irb:11:in’
Your test does not prove anything about a singleton method because it
does not show where the method is defined.
But in case main posted example, Object.new.a and Object.a both work. Which
made me confused. I don’t know why…
$ ruby -e ‘p self, self.class’
$ ruby -e ‘def a;end;p method(:a)’
$ ruby -e ‘p Object.singleton_class.ancestors’
[Class, Module, Object, Kernel, BasicObject]
In other words:
Object.new.a tries to invoke the instance method of Object. Easy.
Object.a invokes an instance method of singleton class of Object. That
singleton class inherits Object and thus all instance methods from
Yes, there is some self-referentiality. But one can get used to it.