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)
ฉันรู้ว่ามีการทำสำเนาโค้ดจำนวนมาก แต่อนิจจา ... เราไม่มีมาโคร (ยัง)! ;)