parámetro de function final o val o en Kotlin?

¿Por qué Kotlin eliminó el parámetro de function final o val, que es muy útil en Java?

fun say(val msg: String = "Hello World") { msg = "Hello To Me" // would give an error here since msg is val //or final ... ... ... } 

Los parameters de la function Kotlin son finales. No hay val o palabra key final porque esa es la opción pnetworkingeterminada (y no se puede cambiar).

Después de la compatibilidad con Kotlin M5.1 de los parameters mutables eliminados, en versiones anteriores que se pueden lograr usando

 fun foo(var x: Int) { x = 5 } 

De acuerdo con los desarrolladores de Kotlin, las principales razones para eliminar esta característica están a continuación:

  1. La razón principal es que esto era confuso: las personas tienden a pensar que esto significa pasar un parámetro por reference, que no admitimos (es costoso en time de ejecución).

  2. Otra fuente de confusión son los constructores primarios: "val" o "var" en una statement de constructor significa algo diferente de lo mismo si una statement de function (es decir, crea una propiedad).

  3. Además, todos sabemos que los parameters de mutación no son buenos, por lo que escribir "val" o "var" delante de un parámetro en una function, catch block for-loop ya no está permitido.

Resumen : todos los valores de los parameters son val ahora. Debes introducir una variable separada para reinicializar. Ejemplo –

 fun say(val msg: String) { var tempMsg = msg if(yourConditionSatisfy) { tempMsg = "Hello To Me" } } 
  • Kotlin "Cualquier tipo que implemente una interfaz"
  • Firebase Android: crea usuarios con correo electrónico y contraseña en Kotlin
  • Live Template no funciona en Kotlin
  • Nullablity de los attributes generados por DB
  • ¿Es posible usar doReturn () y CALLS_REAL_METHODS con mockito-kotlin?
  • API para desarrolladores de Google Play: valor 400 no válido: compras en aplicaciones
  • ¿Por qué mi escena es nula?
  • Diferencia entre ArrayList <String> () y mutableListOf <String> () en Kotlin
  • ¿Cómo crear una nueva list de anteras en kotlin?
  • La vista personalizada no está dibujada en Android
  • Kotlin: ¿Cómo convertir la list al map con la list?