Avatar ·

Passagem por valor ou por referência em Kotlin: por que não consigo alterar um número dentro de uma função?

Olá a todos! Comecei a estudar Kotlin depois de Java e fiquei confuso com o mecanismo de passagem de argumentos para funções. Li vários artigos, mas não entendi completamente. Aqui está um exemplo simples. Escrevo uma função que deve aumentar o número passado em 10: ```kotlin fun increaseValue(x: Int) { x = x + 10 // Erro de compilação: Val cannot be reassigned } ``` O compilador reclama que x é um val. Entendo que em Kotlin os parâmetros são referências imutáveis (val). Mas como funciona a passagem para objetos mutáveis? Aqui está outro exemplo: ```kotlin data class Person(var name: String) fun changeName(person: Person) { person.name = "New Name" // Isso funciona } fun main() { val p = Person("Old") changeName(p) println(p.name) // Imprime "New Name" } ``` Aqui consigo alterar o campo do objeto. Isso significa que para tipos primitivos a passagem é por valor, e para objetos é por referência? Mas se eu tentar substituir o próprio objeto dentro da função: ```kotlin fun replacePerso

No answers yet.

Faça login para deixar uma resposta

Blogs