scalaquery查询的超类型

时间:2011-05-25 14:31:15

标签: scala types scalaquery

所有Scalaquery查询的超类型是什么?

据我所知,Query[Projection[Product]]应该是它,例如:

   Projection2[Int, Int]
<: Projection[Tuple2[Int,Int]]
<: Projection[Product]

因此val query: Query[Projection[Product]] = for (all <- Tab) yield all.*适用于Tab = new Table[(Int, Int)] {…}

...但显然我不明白scala中的输入是如何工作的。

我很困惑,所以如果我错过了什么,请问。

1 个答案:

答案 0 :(得分:2)

这不起作用,因为Projection的类型参数是不变的,并且Projection[Product]需要协变才能成为Projection[(Int,Int)]的超类型。因此Query[Projection[Product]]不是Query[Projection[(Int,Int)]]的超类型,这就是编译器抱怨的原因。

一切都清楚了吗?如果没有,请阅读维基百科和Scala参考中的不变性和协方差。

X的所有投影查询的类型,其中X是Product的子类型,是Query[Projection[X]] forSome { type X <: Product }