Accepted answer

You can also write

(Person.apply _).tupled

to avoid repeating the types.


To build on some of the other comments you could do the following as well since tuple is calling the generated default apply method for the case class.

object Person {
  def tupled = (this.apply _).tupled


One workaround is define a companion object as follows:

object Person extends((String,String) => Person) {



This is very similar to what Alexey Romanov said, but in order to avoid lifting apply whenever you need tupled, we just add it to our companion objects.

object Person {
  def something = "rawr"
  def tupled = (Person.apply _).tupled

Now you can call Person.tupled just like you would have if it didn't have a companion object.

Related Query

More Query from same tag