class MyClass
def test
puts my_id
puts self.my_id
end
private
def my_id
115
end
end
m = MyClass.new
m.test
Этот скрипт приводит к выводу:
115
priv.rb:4:in `test': private method `my_id' called for #<MyClass:0x2a50b68> (NoMethodError)
from priv.rb:15:in `<main>'
В чем разница между вызовом методов изнутри с ключевым словом self
и без него?
Из моего опыта работы с Delphi и C#: не было никакой разницы, и self
можно было использовать, чтобы избежать конфликта имен с локальной переменной, чтобы обозначить, что я хочу вызвать функцию экземпляра или обратиться к переменной экземпляра.