Function.tupled(foo _)(getParams)
lub ten zasugerowany przez Dave'a.
EDYTOWAĆ:
Aby odpowiedzieć na Twój komentarz:
A co jeśli foo jest konstruktorem jakiejś klasy?
W takim przypadku ta sztuczka nie zadziała.
Możesz napisać metodę fabryczną w obiekcie towarzyszącym swojej klasy, a następnie uzyskać zwiniętą wersję jej apply
metody przy użyciu jednej z wyżej wymienionych technik.
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
Dzięki case class
es otrzymujesz obiekt towarzyszący z apply
metodą za darmo, a zatem ta technika jest wygodniejsza w użyciu z case class
es.
scala> case class Person(firstName: String, lastName: String)
defined class Person
scala> Person.tupled(("Rahul", "G"))
res18: Person = Person(Rahul,G)
Wiem, że to dużo duplikatów kodu, ale niestety ... nie mamy (jeszcze) makr! ;)