2
respostas

[Dúvida] Como isso se encaixa na memória RAM?

Eu entendi que para solucionar o problema de Stefani é preciso criar outra lista e usar cada uma em uma função diferente. Porém não entendi exatamente porque isso é necessário do ponto de vista da memória e do armazenamento de informações. Porque não se pode alterar duas vezes os valores dentro de uma lista?

2 respostas

Boa noite Carolina, tudo bem?

Em relação a alteração dos dados, itens passados como "valor" fazem uma copia da informação e não alteram a origem, itens passados como "referencia", como o caso da lista do exercicio, quando alterados os valores a origem é alterada tambem pois nao foi feita uma copia dos dados e sim passado um link.

Entendendo o funcionamento acima, respondendo as suas duvidas:

"Eu entendi que para solucionar o problema de Stefani é preciso criar outra lista e usar cada uma em uma função diferente."

A resolução pode ter inumeras variações mas todas vao depender da logica de negocio que o seu programa vai ter, se voce determinar que os dados da lista podem ser alterados nao tem problema passar uma referencia direta da lista e os dados serem alterados.

Se voce determinar que a lista nao deve ser alterada voce pode passar uma copia.

Fica a decisão do programador como o programa deve funcionar, nao vai existir certo e errado.

Mas sim, uma boa opção seria deixar uma lista "original" e criar uma copia para trabalhar em cima dela e descartar ao final, mantendo somente/sempre a lista original.

"Porque não se pode alterar duas vezes os valores dentro de uma lista?"

Como citei acima poder pode, sem problema. So não é recomendado dependendo do caso.

No exercicio ele queria fazer uma simulação de quantos anos teria uma pessoa daqui 5 anos, não queria realmente alterar a idade da pessoa.

Passando a lista original a idade seria alterada, o que nao era o proposito no caso.

Abraço!

Muito obrigada, Fernando! Ótima explicação