Ross Bamford
12/31/2005 7:50:00 PM
On Sat, 31 Dec 2005 19:11:37 -0000, Marcin MielżyÅ?ski <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