在我了解到案例类扩展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类就足够了.
Dan*_*ral 11
考虑一下:
case class X(n: Int)
case class Y(x: String, y: Int) extends X(y)
Run Code Online (Sandbox Code Playgroud)
如果case类扩展ProductN
,然后,将延伸两个Product1
和Product2
,但类型参数的变化,因此有两种不同的重载_1
.这只是一个问题 - 我打赌还有其他问题.
现在,不推荐使用case类继承case类,而Martin Odersky正在考虑让它们继承ProductN.AFAIK尚未完成,但障碍已被删除.
归档时间: |
|
查看次数: |
2029 次 |
最近记录: |