我们都知道,当我们创建一个这样的匿名类时:
var Employee = new { ID = 5, Name= "Prashant" };
Run Code Online (Sandbox Code Playgroud)
...在运行时它将是类型:
<>f__AnonymousType0<int,string>
Run Code Online (Sandbox Code Playgroud)
有没有办法为这些类指定有意义的名称?
在我了解到案例类扩展Product之后,我想知道他们为什么不扩展ProductN.例如,给出如下代码:
case class Foo(a: Int)
Run Code Online (Sandbox Code Playgroud)
我期望Foo(1).asInstanceOf[Product1[Int]]工作,但它没有(使用Scala 2.9.1检查,并通过其他来源和Product文档确认).
我对此感兴趣,因为我想声明如下的类:
abstract class UnaryOp[T1 <: Exp[_], R](t1: T1) extends Exp[R] {
this: Product1[T1] =>
}
Run Code Online (Sandbox Code Playgroud)
这样,一元操作的节点必须实现Product1.如果只是一个带有一个参数的case类就足够了.