- Eu não entendi muito bem a diferença entre eles dois, e porque uma pode referenciar e o outro não??
- Eu não entendi muito bem a diferença entre eles dois, e porque uma pode referenciar e o outro não??
Olá Victor!
A diferença entre "it" e "this" nas funções de escopo do Kotlin é bastante importante para entender o funcionamento dessas funções.
Quando utilizamos o "it", estamos nos referindo a um objeto de contexto que é acessível como um argumento do lambda. Por exemplo, quando utilizamos a função "let", podemos acessar o objeto de contexto tanto através de um apelido que criamos ou através do "it".
Já quando utilizamos o "this", estamos nos referindo ao receptor ou "receiver" do lambda. Isso significa que o objeto de contexto é acessível sem a necessidade de utilizar o nome do objeto. É como se o objeto estivesse sendo subentendido dentro do lambda.
Vou te dar um exemplo prático para ficar mais claro. Digamos que temos uma string "Hello" e queremos executar uma função de escopo como o "run" ou o "let". Ambos vão fazer a mesma coisa, mas no "run" teremos acesso ao objeto de contexto como um "this" ou receptor. Por exemplo:
val str = "Hello"
str.run {
println(this.length) // Aqui podemos acessar o objeto de contexto sem referenciá-lo
// ou seja, podemos acessar o length diretamente
}
No caso acima, podemos acessar o objeto de contexto (a string "Hello") diretamente através do "this" e utilizar seus membros, como o "length", sem a necessidade de referenciá-lo.
Espero ter ajudado e bons estudos!