Function.tupled(foo _)(getParams)
или тот, который предложил Дэйв.
РЕДАКТИРОВАТЬ:
Чтобы ответить на ваш комментарий:
Что если foo окажется конструктором некоторого класса?
В этом случае этот трюк не сработает.
Вы можете написать метод фабрики в объекте-компаньоне вашего класса, а затем получить версию его кортежаapply
метод с использованием одного из вышеупомянутых методов.
scala> class Person(firstName: String, lastName: String) {
| override def toString = firstName + " " + lastName
| }
defined class Person
scala> object Person {
| def apply(firstName: String, lastName: String) = new Person(firstName, lastName)
| }
defined module Person
scala> (Person.apply _).tupled(("Rahul", "G"))
res17: Person = Rahul G
С помощью case class
es вы бесплатно получаете объект-компаньон с методом apply
, и поэтому этот метод удобнее использовать с case class
es.
scala> case class Person(firstName: String, lastName: String)
defined class Person
scala> Person.tupled(("Rahul", "G"))
res18: Person = Person(Rahul,G)
Я знаю, что это много дублирования кода, но, увы ... у нас нет макросов (пока)!;)