Function.tupled(foo _)(getParams)
oder der von Dave vorgeschlagene.
BEARBEITEN:
Um auf Ihren Kommentar zu antworten:
Was ist, wenn foo zufällig der Konstruktor einer Klasse ist?
In diesem Fall funktioniert dieser Trick nicht.
Sie können eine Factory-Methode in das Begleitobjekt Ihrer Klasse schreiben und dann die tupelige Version ihrer apply
Methode mithilfe einer der oben genannten Techniken abrufen .
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
Mit case class
es erhalten Sie ein Begleitobjekt mit einer apply
kostenlosen Methode, und daher ist diese Technik mit case class
es bequemer zu verwenden .
scala> case class Person(firstName: String, lastName: String)
defined class Person
scala> Person.tupled(("Rahul", "G"))
res18: Person = Person(Rahul,G)
Ich weiß, dass das eine Menge Code-Duplizierung ist, aber leider ... haben wir (noch) keine Makros! ;)