With
Observação: O arquivo utilizado neste conteúdo que fala sobre dataclass é o 7-with.kt.
Pronto para mais um conteúdo?
O que é o With?
Em estudos anteriores vimos que é possível instanciar nossas classes, de modo a chamar nossos métodos da seguinte forma:
class PessoaDois(val anoNascimento: Int, val nome: String){//Aqui temos uma classe normal, com dois atributos (anoNascimento, nome) e dois métodos (acordar e dormir)
fun acordar(){
println("Acordando...")
}
fun dormir(){
println("Dormindo...")
}
}
...
val pessoaCriadaParaExecucaoDeTestes = PessoaDois(1999, "Micilini Roll")
pessoaCriadaParaExecucaoDeTestes.acordar()
pessoaCriadaParaExecucaoDeTestes.dormir()
Observe o quão grande é o nome daquela variável que armazena a instância da classe PessoaDois, enorme não é mesmo?
Com o comando with, nós podemos passar o nome dessa variável e chamar todos os métodos que acharmos necessário, sem a necessidade de ficar repetindo o nome da variável toda hora, observe:
with(pessoaCriadaParaExecucaoDeTestes){
this.acordar()
this.dormir()
acordar()//Também podemos chamar sem o this
dormir()
println(anoNascimento)//Chamando atributos
}
Com o With conseguimos chamar os métodos da classe dentro de um bloco, de modo a referenciar nossa variável por meio do this (Como também podemos fazer sem ele).
Isso ajuda a leitura e organização de código quando temos nomes muito grandes.
É importante ressaltar que a funcionalidade é a mesma, o que muda mesmo é a forma como organizamos nosso código.
Convenhamos, é muito mais fácil fazer isso:
with(pessoaCriadaParaExecucaoDeTestes){
this.acordar()
this.dormir()
}
Do que isso:
pessoaCriadaParaExecucaoDeTestes.acordar()
pessoaCriadaParaExecucaoDeTestes.dormir()
Conclusão
Neste conteúdo você aprendeu a como chamar métodos e acessar atributos da nossa classe por meio do comando with.
Até o próximo conteúdo 😃