Function.tupled(foo _)(getParams)ou celui suggéré par Dave.
ÉDITER:
Pour répondre à votre commentaire:
Et si foo était le constructeur d'une classe?
Dans ce cas, cette astuce ne fonctionnera pas.
Vous pouvez écrire une méthode de fabrique dans l'objet compagnon de votre classe, puis obtenir la version tuplée de sa applyméthode en utilisant l'une des techniques susmentionnées.
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
Avec case classes, vous obtenez un objet compagnon avec une applyméthode gratuitement, et cette technique est donc plus pratique à utiliser avec case classes.
scala> case class Person(firstName: String, lastName: String)
defined class Person
scala> Person.tupled(("Rahul", "G"))
res18: Person = Person(Rahul,G)
Je sais que c'est beaucoup de duplication de code mais hélas ... nous n'avons pas (encore) de macros! ;)