Qual'è la differenza tra var
e val
in Kotlin?
Ho attraversato questo link:
https://kotlinlang.org/docs/reference/properties.html
Come indicato su questo link:
La sintassi completa di una dichiarazione di proprietà di sola lettura differisce da una mutabile in due modi: inizia con val anziché var e non consente un setter.
Ma poco prima c'è un esempio che usa un setter.
fun copyAddress(address: Address): Address {
val result = Address() // there's no 'new' keyword in Kotlin
result.name = address.name // accessors are called
result.street = address.street
// ...
return result
}
Qual è la differenza esatta tra var
e val
?
Perché abbiamo bisogno di entrambi?
Questo non è un duplicato di Variabili in Kotlin, differenze con Java. var vs val? come sto chiedendo riguardo al dubbio relativo al particolare esempio nella documentazione e non solo in generale.
result
non può essere modificato per fare riferimento a un'istanza diversa diAddress
, ma l'istanza a cui fa riferimento può ancora essere modificata. Lo stesso sarebbe vero in Java se avessi unfinal Address result = new Address();