Function.tupled(foo _)(getParams)
ou aquele sugerido por Dave.
EDITAR:
Para responder ao seu comentário:
E se foo for o construtor de alguma classe?
Nesse caso, esse truque não funcionará.
Você pode escrever um método de fábrica no objeto companheiro de sua classe e, em seguida, obter a versão tuplada de seu apply
método usando uma das técnicas acima mencionadas.
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
Com case class
es, você obtém um objeto companheiro com um apply
método gratuitamente e, portanto, essa técnica é mais conveniente para usar com case class
es.
scala> case class Person(firstName: String, lastName: String)
defined class Person
scala> Person.tupled(("Rahul", "G"))
res18: Person = Person(Rahul,G)
Eu sei que é muita duplicação de código, mas, infelizmente ... não temos macros (ainda)! ;)