Considera lo siguiente,
val x: Int = 0
las variables val no se pueden cambiar, por lo que hacer x += 1 no funcionaría
El compilador dice que Val cannot be reassigned
¿Por qué entonces x.inc() funciona bien?
x.inc() no reasigna el valor de 0 a 1
x.inc() no incrementa la variable x . En su lugar, devuelve un valor que es uno más que el valor de x . No cambia x .
val x = 0 x.inc() // 1 is retuned, but discarded here print(x) // still 0!Como dice su documentación :
Devuelve este valor incrementado en uno.
Eso puede parecer un método muy inútil. Bueno, esto es lo que usa Kotlin para implementar la sobrecarga de operadores para el operador postfix/prefix ++ .
Cuando haces a++ , por ejemplo, sucede lo siguiente:
- Almacene el valor inicial de
aen un almacenamiento temporala0.- Asigne el resultado de
a0.inc()aa.- Devuelve
a0como resultado de la expresión.
Aquí puede ver cómo se usa el valor de retorno de inc .