Inicialización de val por desestructuración en Kotlin
Inicialmente quería lograr
class NotationDiceRoll(notation: String) {
val rolls: Int
val sides: Int
init {
parseNotation(notation)
}
private fun parseNotation(notation: String) {
rolls = 1
sides = 4
}
}
Pero Kotlin se queja de que "Val no puede ser reasignado".
Parece que el único lugar donde se pueden asignar los vals es el bloque init. Bien entonces, es más obvio después de todo. Entonces lo cambié a
class NotationDiceRoll(notation: String) {
val rolls: Int
val sides: Int
init {
(rolls, sides) = parseNotation(notation)
}
private fun parseNotation(notation: String): Pair<Int, Int> {
return Pair(1, 4)
}
}
Ahora Kotlin se queja de que "los 'rollos' variables deben ser inicializados".
Puede ser resuelto por
init {
val(rolls, sides) = parseNotation(notation)
this.rolls = rolls
this.sides = sides
}
Pero es menos elegante.
Entonces mi pregunta es: ¿la desestructuración es realmente posible solo con los valles declarados en la misma línea?