Magnolia Tech

いつもコードのことばかり考えている人のために。

Scalaでapplyメソッドを引数に期待しているところにコンパニオンオブジェクトをそのまま渡しても良い

Spray-JSONのソースを読んでて、まぁそりゃそうかと思ったけど、こう書けるのかって改めて思ったので残しておきます。

scala> case class Person(name: String, age: Int)
defined class Person
scala> def test(constructor: (String, Int) => Person): Person = {
     | constructor("John", 42)
     | }
test: (constructor: (String, Int) => Person)Person

scala> test(Person)
res0: Person = Person(John,42)

scala> test(Person.apply)
res1: Person = Person(John,42)