'Spread' parámetros en Scala?
¿Hay alguna manera de llamar a una función de Scala que toma parámetros individuales,dado una matriz (similar a JavaScriptSpreads en ECMAScript 6)?
ys = [10.0, 2.72, -3.14]
f(x, ...ys);
La sintaxis más limpia sería:
f(1, ys)
pero eso no parece ser posible. Inclusof(1, ys:_*)
no funciona (y tampoco lo hacef(ys:_*)
, ya que el compilador informa muy pocos parámetros (solo se llena el primero).
Ejemplo:
def f (a:Int, b:Float, c:Float, d:Float): String
val x = 1
val ys = List(10.0, 2.72, -3.14) // note: non-Objects
val result = f(x, ys) // intuitive, but doesn't work
Caso de uso: inyectar datos de prueba (de colecciones) en métodos existentes que aceptan parámetros individuales. Como estos son casos de prueba, está muy bien si los #params en ys no coinciden y eso da un error de tiempo de ejecución o un resultado incorrecto.
La pregunta es si Scala permite una sintaxis limpia para llamar a una función que toma parámetros individuales, dada una colección de parámetros, no si es una buena opción.diseño (aunque las opiniones son ciertamente bienvenidas).