scalaquery 查询的超类型

发布于 2024-11-09 08:59:43 字数 420 浏览 0 评论 0原文

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

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

What is the supertype for all Scalaquery queries?

As far as i have understood, Query[Projection[Product]] should be it, e.g.:

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

so val query: Query[Projection[Product]] = for (all <- Tab) yield all.* should work for Tab = new Table[(Int, Int)] {…}

…but appearantly i don’t understand how typing in scala works.

I’m totally confused, so if i missed something, please ask.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

聚集的泪 2024-11-16 08:59:43

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

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

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

This doesn't work because the type parameter for Projection is invariant and it would need to be covariant for Projection[Product] to be a supertype of Projection[(Int,Int)]. Thus Query[Projection[Product]] is not a supertype of Query[Projection[(Int,Int)]], which is the reason why the compiler is complaining.

Everything clear? If not, read about invariance and covariance in wikipedia and in the Scala reference.

The type of all Querys of Projections of X, where X is a subtype of Product, is Query[Projection[X]] forSome { type X <: Product }.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文