среда, 26 сентября 2007 г.

Особенности изменяемых атрибутов (writable attributes) в Ruby

Изменяемые атрибуты (writable attributes) - атрибуты объекта, которые могут быть изменены сторонними объектами. Для этих атрибутов должен быть определен метод присвоения или или ему должно быть разрешено изменение (attr_writer, attr_accessor), что бы этот метод сгенерился автоматически :

Ruby позволяет создавать виртуальные атрибуты - реально переменной объекта не существует, но есть методы, имитирующие доступ к ней:

Все понятно. Не понятно только почему в методе reset доступ к hour осуществляется через self, а в методе dump - без self. Оказывается, что в случае отсутствия self при записи значения hour интерпритируется как локальная переменная метода reset. Поэтому нужно явно указывать что вызывается метод класса, а не выполняется инициализация локальной переменной. Это существенно только для записи значения. При чтении self не обязателен. Если забыть об этом, можно получить не очевидную ошибку.

Комментариев нет: