Não consegui entender a diferença dos attr acessor
Não consegui entender a diferença dos attr acessor
Oi Felipe,
Temos 3 formas de acessarmos um atributo: attr_reader
, attr_writer
e attr_accessor
.
O attr_reader
só cria o método de leitura do seu atributo, ou seja, você pode imprimir os dados mas não pode atribuir nenhum valor fora da classe. Já o attr_writer
é o contrário, você só possui acesso de escrita para o atributo.
Quando você precisa tanto ler, quanto escrever, aí você pode utilizar o attr_accessor
pois ele faz os dois.
Ex:
class Produto
attr_reader :nome
attr_writer :preco
attr_accessor :descricao
end
p = Produto.new
puts p.nome # Aqui funciona, possui o attr_reader
p.nome = "Bola" # Aqui não funciona, o acesso é somente de leitura
p.preco = 10 # Esse funciona, tem attr_writer
puts p.preco # Não tem acesso de leitura, dá problema
p.descricao = "Bola de futebol" # Atribui normalmente, tem attr_accessor
puts p.descricao # Imprime normalmente, tem attr_accessor
Abraço!