Если переменная экземпляра принадлежит классу, могу ли я получить доступ к переменной экземпляра (например @hello
) напрямую, используя экземпляр класса?
class Hello
def method1
@hello = "pavan"
end
end
h = Hello.new
puts h.method1
ruby
instance-variables
Pawan
источник
источник
h = Hello.new
иh.method1
иh.hello
?attr_reader :hello
alias my_hello hello
, не такalias :my_hello :hello
ли?Вы также можете сделать это, позвонив
attr_reader
илиattr_accessor
подобным образом:class Hello attr_reader :hello def initialize @hello = "pavan" end end
или же
class Hello attr_accessor :hello def initialize @hello = "pavan" end end
Вызов
attr_reader
создастgetter
для данной переменной:h = Hello.new p h.hello #"pavan"
Вызов
attr_accessor
создастgetter
ANDsetter
для данной переменной:h = Hello.new p h.hello #"pavan" h.hello = "John" p h.hello #"John"
Как вы понимаете, используйте
attr_reader
иattr_accessor
соответственно. Используйте толькоattr_accessor
тогда, когда вам нужноgetter
И,setter
и используйте,attr_reader
когда вам нужен толькоgetter
источник