Это список методов доступа в Ruby:
attr_reader :var
# has the effect of:
def var
@var
end
attr_writer :var
# has the effect of:
def var=(value)
@var = value
end
attr_accessor :var
# has the effect of:
attr_reader :var
attr_writer :var
attr
работает как
attr_reader
в форме, используемой в вашем коде:
attr :str
.
Вот пример использования в экземпляре класса:
sm = SizeMatters.new('hello')
sm.str #=> "hello"
sm.str = 'hi' #=> undefined method `str=' for hello:SizeMatters
Невозможно изменить переменную экземпляра (attr) @str
для экземпляра SizeMatters
Если используется как
attr: :str, true
, работает как
attr_accessor
, но
устарело .
Для справки проверьте здесь:
https://ruby -doc.org / core-2.5.0 / Module.html # method-i-attr