Puedo inicializar 2 variables de diferentes tipos así:

val (p1, p2) = when (someEnum: SomeEnum) {
    SomeEnum.x -> "NameX" to 100
    SomeEnum.y -> "NameY" to 200
}

¿Cómo haría lo mismo pero para 3 variables?

0
Dmitrii Leonov 23 jun. 2020 a las 06:30

3 respuestas

La mejor respuesta

to crea una tupla de 2 elementos - Pair<A, B> por lo que usar una tupla de tres elementos Triple<A, B, C> es la solución.

val (p1, p2, p3) = when (enum: SomeEnum) {
    SomeEnum.x -> Triple("NameX", 100, true)
    SomeEnum.y -> Triple("NameY", 200, false)
}

Para las variables del mismo tipo:

val (p1, p2, p3) = when (enum: SomeEnum) {
    SomeEnum.x -> listOf<String>("NameX", "100", "true")
    SomeEnum.y -> listOf<String>("NameY", "200", "false")
}
0
Dmitrii Leonov 23 jun. 2020 a las 03:30

Triple es la opción de tu pregunta

El lenguaje Kotlin proporciona un tipo de datos simple para almacenar tres valores en una sola instancia. Esto se puede hacer usando una clase de datos conocida como Triple. Es una clase genérica simple que almacena tres valores, no hay un significado valioso de la relación entre los tres valores. La comparación entre dos objetos triples se realiza sobre la base de valores, es decir, dos triples son iguales solo si los tres componentes son iguales.

Definición de clase:

data class Pair<out A, out B, out C> : Serializable

Hay tres parámetros: A - tipo del primer valor B - tipo del segundo valor C - tipo del tercer valor

Constructor - En Kotlin, el constructor es una función miembro especial que se invoca cuando se crea un objeto de la clase principalmente para inicializar variables o propiedades. Para crear una nueva instancia de Triple utilizamos:

Pair(first: A, second: B, third: C)

Kotlin ejemplo de crear triple usando el constructor -

fun main() { 
    val (x, y, z) = Triple(1, "Person", 2.0) 
    println(x) 
    println(y) 
    println(z) 
} 

Salida:

1 persona 2.0

0
Pawan Soni 23 jun. 2020 a las 07:43

Usar un Triple es una respuesta correcta, pero considere una clase de datos con nombre. La documentación de Kotlin dice lo siguiente:

La biblioteca estándar proporciona pares y triples. Sin embargo, en la mayoría de los casos, las clases de datos con nombre son una mejor opción de diseño, ya que hacen que el código sea más legible al proporcionar nombres significativos para las propiedades.

1
Bram Stoker 23 jun. 2020 a las 06:16