On Sat, 31 Dec 2005 19:11:37 -0000, Marcin Miel¥Ê¥·y¥Ê§Ôki <lopexx / autograf.pl>  
wrote:

> Jim wrote:
>> Here's some example code. In method_b, what is the difference in
>> calling method_a and self.method_a?
>>
>
> In Your code it makes no difference, however there are situations when  
> You'll have to explicitly resolve method invocation, consider:
>
> class C
> 	def meth1
> 	end
>
> 	def meth2
> 		meth1	# no problem, but..
> 		meth1=4	# variable assignment
> 		self.meth1 # so we have to resolve it as a method
> 	end	
> end
>
> other thing is operator method invocation:
>
> class D
>
> 	def + arg
> 		p arg
> 	end
>
> 	def meth
> 		+ 2		# Ruby sees it as unary plus, aka +@
> 		self + 2 	# explicit
> 	end
>
> end
>
>

Somewhat related to the above is the following case:

	class Clz
	  attr_accessor :myattr
	
	  def amethod
	    # doesn't work, Ruby treats as local assignment
	    # myattr = 5
	
	    # We have to be explicit.
	    self.myattr = 5
	  end
	end

Another area I guess it could make a difference is:

	class ClzToo

	  def amethod
	    # doesn't work, private methods cannot be called
	    # with a receiver.
	    # puts self.aprivate

	    # So we can only call without 'self'
	    puts aprivate
	  end

	  private

	  def aprivate
	    "private"
	  end
	end


-- 
Ross Bamford - rosco / roscopeco.remove.co.uk