Как работает self? Понял что метод self передает ссылку на сам себя, а вот в каких случаях использовать self а в каких нет я не понял...
Ответ
Ruby - полностью объектно-ориентированный язык. В любой момент времени вы действуете в рамках какого-то объекта, даже если все выглядит так, что вы работаете вне объекта. В языке нет функций и процедур в привычном понимании, только методы, причем метод не может вызываться без получателя, т.е. объекта.
self - это ссылка на текущий объект. Для обращений к элементам интанс-объекта не обязательно указывать self, так как он подразумевается по умолчанию, но иногда он нужен. Например, при создании методов класса
class MyClass
def hello
p 'hello'
end
end
o = MyClass.new
o.hello
# MyClass.hello - ошибка
Однако
class MyClass
def self.hello
p 'hello'
end
end
MyClass.hello
o = MyClass.new
# o.hello - ошибка
Это не единственный случай, когда вы не сможете обойтись без self, однако чтобы всех их осветить потребуется небольшая книга. При работе с self главное помнить, что это ссылка на текущий объект и что такой объект всегда существует, даже когда вы работаете в корневой области видимости
self
=> main
Комментариев нет:
Отправить комментарий