1

所有 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 是如何工作的。

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

4

1 回答 1

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 }

于 2011-05-25T19:12:33.217 回答