«Распространение» параметров в Scala?
Есть ли способ вызвать функцию Scala, которая принимает отдельные параметры,заданный массив (похоже на JavaScriptспреды в ECMAScript 6)?
ys = [10.0, 2.72, -3.14]
f(x, ...ys);
Самый чистый синтаксис был бы:
f(1, ys)
но это не представляется возможным. Четноеf(1, ys:_*)
не работает (и не работаетf(ys:_*)
, так как компилятор сообщает слишком мало параметров - заполняется только первый).
Пример:
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
Вариант использования: внедрение тестовых данных (из коллекций) в существующие методы, которые принимают отдельные параметры. Так как это тестовые случаи, это 'все в порядке, если #params в ys нене совпадают, и это дает либо ошибку во время выполнения, либо неверный результат.
Вопрос в том, позволяет ли Scala чистый синтаксис для вызова функции, которая принимает отдельные параметры, учитывая набор параметров, а не является ли это хорошимдизайн (хотя мнения, безусловно, приветствуются).