1
resposta

Pq attr_reader e não attr_writer ou attr_accessor?

class Estoque
   attr_reader :livros
   #outros métodos da classe
end

No exercício declara como attr_reader, depois conseguimos adicionar e remover livros? Pq não deve ser attr_writer ou attr_accessor?

1 resposta

Olá, Fabio!

Peço desculpas pela demora em obter um retorno

Ótima pergunta! No caso do atributo livros da classe Estoque, o uso do attr_reader é apropriado quando queremos apenas ler o valor do atributo, mas não modificá-lo diretamente. Isso significa que você poderá acessar o valor do atributo livros, mas não poderá alterá-lo diretamente.

Se você quiser adicionar ou remover livros, você precisará definir métodos específicos para isso, como por exemplo adicionar_livro e remover_livro. Dessa forma, você terá controle sobre como os livros são adicionados ou removidos do estoque.

Agora, se você quiser permitir tanto a leitura quanto a modificação do atributo livros, você pode utilizar o attr_accessor. Com o attr_accessor, você terá acesso tanto para ler quanto para escrever no atributo livros.

Em resumo, o uso do attr_reader é adequado quando você quer apenas ler o valor do atributo, enquanto o attr_accessor é utilizado quando você quer ler e escrever no atributo.

Todavia, vale ressaltar que como você postou sua pergunta há algum tempo é possível que a constante evolução da tecnologia impacte na resolução da sua dúvida. Sendo assim, caso queira se aprofundar neste tema e com conteúdos atualizados, recomendo os materiais abaixo:

Espero ter ajudado e bons estudos!