Function.tupled(foo _)(getParams)
hoặc một trong những gợi ý của Dave.
BIÊN TẬP:
Để trả lời bình luận của bạn:
Điều gì sẽ xảy ra nếu foo là hàm tạo của một số lớp?
Trong trường hợp đó, thủ thuật này sẽ không hoạt động.
Bạn có thể viết một phương thức gốc trong đối tượng đồng hành của lớp của mình và sau đó lấy phiên bản bộ của apply
phương thức đó bằng một trong các kỹ thuật đã nói ở trên.
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
Với case class
es, bạn nhận được một đối tượng đồng hành với một apply
phương thức miễn phí, và do đó kỹ thuật này thuận tiện hơn khi sử dụng với case class
es.
scala> case class Person(firstName: String, lastName: String)
defined class Person
scala> Person.tupled(("Rahul", "G"))
res18: Person = Person(Rahul,G)
Tôi biết đó là rất nhiều mã trùng lặp nhưng than ôi ... chúng tôi chưa có macro (chưa)! ;)