1
resposta

como é possível alterar o atributo livros apenas com o attr_reader ?

Oi, tudo bem?

Nessa atividade é utilizado um attr_reader para o atributo livros da classe Estoque. Pelo que entendo do método attr_reader do Ruby, ele deveria permitir apenas a leitura do atributo, certo?

Sendo assim, como é possível adicionar livros nesse array antes de implementar o método adiciona_livro?

Ao executarmos

estoque.livros << Livro.new(params...)

Não estamos alterando o atributo livros da instância de Estoque? Para isso não deveria ser necessário um attr_acessor?

Agradeço desde já!

1 resposta

Oi Rodrigo, tudo bem? Acontece que ao fazer estole.livros temos nas não um array certo? E não é paramente, mas o simbolo << é um dos método da classe Array.

Você poderia ter o mesmo efeito fazendo:

estoque.livros.<< Livro.new(params...)

O attr_reader neste caso, impediria de alguém substituir por completo o atributo livros dessa forma:

estoque.livros = Array.new

Que seria uma alteração do objeto livros.

Deu pra entender? Espero que sim. Faça alguns testes.

Bons estudos.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software