Scala将case类作为函数传递

时间:2017-03-10 16:54:54

标签: scala

Scala magic允许将MyClass作为函数传递:

trait T
case class MyClass(x: String) extends T
def m(f: (String) => T): Unit = println("working")
m(MyClass)

1 个答案:

答案 0 :(得分:1)

您没有传递案例类,而是传递了它的伴随对象,也称为MyClassMyClass(随播广告)是Function1[String, T],因为编译器会自动创建方法:

def apply(s: String): MyClass

您可以查看:

scala> MyClass.isInstanceOf[Function1[String, T]]
res53: Boolean = true