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)
Я знаю, що це багато дублювання коду, але на жаль ... у нас немає макросів (поки)! ;)