1
resposta

lista nomesSalvos vindo vazia

Não entendi galera. Fiz uma cópia do BancoDeNomes() para váriável nomesSalvos. Chamei o metodo banco.salvar("Alex") e acrecentei um item na lista.

Ao imprimir eu tenho o seguinte resultado:

nomes salvos []
banco de nomes [Alex]

Pergunta: Fiz a cópia antes de acrescentar o item na lista, eu não entedi pq o lista de nomesSalvos veio vazia.

fun main() {
    val banco = BancoDeNomes()
    val nomesSalvos:Collection<String> = banco.nomes
    banco.salvar("Alex")
    println("nomes salvos $nomesSalvos")
    println("banco de nomes ${BancoDeNomes().nomes}")
}

class BancoDeNomes() {

    val nomes: Collection<String> get() = dados.toList()

    fun salvar(value:String){
        dados.add(value)
    }

    companion object{
        private val dados = mutableListOf<String>()
    }
}
1 resposta

Fala Thailan, tranquilo?

Quando você faz o toList(), você está gerando uma nova collection com os dados que ela possui naquele determinado momento.

val nomes: Collection<String> get() = dados.toList()

No momento que você criou o nomeSalvos a lista de nomes estava vazia. Mesmo você fazendo a adição de um novo nome, não irá afetar a collection nomesSalvos (é uma nova completamente apartada).

Uma maneira de você verificar que a variável será preenchida é desta forma:

val banco = BancoDeNomes()
 banco.salvar("Alex")
 val nomesSalvos:Collection<String> = banco.nomes

Para mais informações sobre: https://kotlinlang.org/docs/constructing-collections.html#copy