Начиная с версии 0.8 (которая сейчас находится в предварительной версии), директива @!attribute
является рекомендуемым способом обозначения объекта как атрибута. Теги @attr_*
устарели в пользу этой директивы. Вы также можете сделать (в 0.8.0 +):
# @!parse attr_accessor :some_attribute
Для анализа кода, который не обязательно выполняется Ruby. До версии 0.8 вы могли просто добавить attr_accessor напрямую, а затем переопределить метод установки / получения следующим образом:
class MyClass
attr_accessor :foo
def foo; something_else end
def foo=(v) something_else(v) end
end
Ruby не должен возражать, за исключением того, что в ruby -w
он будет предупреждать о переопределениях методов. Если это вас не устраивает, вы можете добавить туда undef foo, foo=
. Это немного грязно (если вас волнует -w), поэтому мы добавили такие вещи, как @!parse
и @!attribute
.