En Python que es posible hacer algo como esto:Scala equivalente a Python devolver varios artículos
def blarg():
return "blargidy", "blarg"
i, j = blargh()
¿Hay algo similar disponible en Scala?
En Python que es posible hacer algo como esto:Scala equivalente a Python devolver varios artículos
def blarg():
return "blargidy", "blarg"
i, j = blargh()
¿Hay algo similar disponible en Scala?
Puede devolver una tupla:
def blarg = ("blargidy", "blarg")
val (i, j) = blarg
Nota la sintaxis de coincidencia de patrones para la asignación de variables en paralelo: esto funciona para cualquier patrón, no sólo para las tuplas. Así, por ejemplo:
val list = 1 :: 2 :: 3 :: Nil
val x :: y = list // x = 1 and y = 2 :: 3 :: Nil
Comprendo que esto es una vieja pregunta, pero no hay otra manera de lograr lo mismo. No sé si hay algún inconveniente, pero la ventaja es que los valores devueltos son "nombrados", lo que hace que el código sea un poco más claro.
(probado en Scala 2,11)
package test.scala.misc
object TestReturnMultipleNamedValues extends App {
val s = getMultipleNamedValues
println(s"changed=${s.dsChanged} level=${s.dsLevel}")
/** Returns an anonymous structure with named members.
* */
def getMultipleNamedValues() : {val dsChanged : Boolean;val dsLevel : Int} = {
new {
val dsChanged = true
val dsLevel = 1
}
}
}
O utilice una clase de caso para que funcione la coincidencia de patrones –
impresionante, gracias! – dave
Esto es realmente realmente de la misma manera que funciona en Python. –
@KarlKnechtel, solo si el número de elementos devueltos coincide con el número de variables. De lo contrario, obtendrá el error "demasiados valores para descomprimir", que es lo que obtendría en Python en el segundo ejemplo. – dave