在我了解到案例类扩展了 Product 之后,我想知道为什么它们不扩展 ProductN。例如,给定如下代码:
case class Foo(a: Int)
我希望Foo(1).asInstanceOf[Product1[Int]]
能工作,但它没有(使用 Scala 2.9.1 检查,并由其他来源和Product
文档确认)。
我对此很感兴趣,因为我想声明如下类:
abstract class UnaryOp[T1 <: Exp[_], R](t1: T1) extends Exp[R] {
this: Product1[T1] =>
}
这样,一元操作的节点必须实现 Product1。如果只是一个带有一个参数的案例类就足够了,那就太好了。