class Estoque
attr_reader :livros
#outros métodos da classe
endNo exercício declara como attr_reader, depois conseguimos adicionar e remover livros? Pq não deve ser attr_writer ou attr_accessor?
class Estoque
attr_reader :livros
#outros métodos da classe
endNo exercício declara como attr_reader, depois conseguimos adicionar e remover livros? Pq não deve ser attr_writer ou attr_accessor?
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!