In Ruby, my understanding is that self
is the implied receiver for any bare method call. However:
~: irb
>> puts \"foo\"
foo
=> nil
>
I think the answer is this: Ruby's way of enforcing method privacy is that it doesn't allow calling private methods with an explicit receiver.
An example:
class Baker
def bake_cake
make_batter
self.use_oven # will explode: called with explicit receiver 'self'
end
private
def make_batter
puts "making batter!"
end
def use_oven
puts "using oven!"
end
end
b = Baker.new
b.bake_cake
Since there can be no explicit receiver, you certainly can't do b.use_oven
. And that is how method privacy is enforced.