Re: What's the difference in calling method vs self.method?



On Sat, 31 Dec 2005 19:11:37 -0000, Marcin Mielżyński <lopexx@xxxxxxxxxxx> 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@xxxxxxxxxxxxxxxxxxxxxx .