Avatar ·

Passage par valeur ou par référence en Kotlin : pourquoi ne puis-je pas modifier un nombre dans une fonction ?

Bonjour à tous ! Je viens de commencer à étudier Kotlin après Java et je me suis embrouillé dans le mécanisme de passage des arguments aux fonctions. J'ai lu plusieurs articles, mais je n'ai pas tout compris. Voici un exemple simple. J'écris une fonction qui doit augmenter le nombre passé de 10 : ```kotlin fun increaseValue(x: Int) { x = x + 10 // Erreur de compilation : Val cannot be reassigned } ``` Le compilateur se plaint que x est un val. Je comprends que les paramètres en Kotlin sont des références immuables (val). Mais alors comment fonctionne le passage pour les objets mutables ? Voici un autre exemple : ```kotlin data class Person(var name: String) fun changeName(person: Person) { person.name = "New Name" // Cela fonctionne } fun main() { val p = Person("Old") changeName(p) println(p.name) // Affiche "New Name" } ``` Ici, je peux modifier le champ de l'objet. Cela signifie-t-il que pour les primitifs, le passage est par valeur, et pour les objets, par référence ? Mais si j'essaie de remplacer l'objet lui-même à l'intérieur de la fonction : ```kotlin fun replacePerso