【问题标题】:Why's type lattice in Scala?为什么在 Scala 中使用类型格?
【发布时间】:2015-02-10 04:36:25
【问题描述】:

我听到有人说:

“Scala 使用类型格而不是类型层次结构,这与 Java 不同”。

我不太明白type lattice是什么意思,type latticetype hierarchy的主要区别是什么。 p>

谁能给我解释一下这个词?

【问题讨论】:

  • 我认为这不是标准术语。它们可能只是意味着特征允许比 java 接口更大程度的多重继承,或者它们可能意味着其他东西。你问过说这话的人是什么意思吗?

标签: scala hierarchy type-systems


【解决方案1】:

它本质上意味着:Scala 的类型层次结构是一个格子,即它有一个“底部”和一个“顶部”。

从图片中可以看出,这里的顶部类型是Any,底部是Nothing

【讨论】:

  • 好照片。它真的是格子吗?我可以定义两个特征AB 以及两个类C extends A with BD extends A with B,这意味着没有唯一的最小上限。
  • Scala 有一个“连接”。它被称为with。 @KuluLimpa 对于您的示例,最大的下限是 A with B with C with D 类型。我不知道是否有“相遇”,所以它可能只是一个连接半格而不是一个完整的格。
  • @aij 如果我对格的理解足够好,那么 CD 的 Scala 的 LUB(连接)是 AnyRef with A with B(因为类会自动扩展 AnyRef)和 GLB(满足)只是C with D?您的 A with B with C with D 示例似乎不是连接(CD 都不满足该类型),而是会议的详细版本(AB 隐含在 C 和 @ 987654341@),对吧?
猜你喜欢
  • 2011-07-21
  • 2019-10-09
  • 2018-12-16
  • 2011-05-18
  • 2020-09-10
  • 1970-01-01
  • 1970-01-01
  • 2021-02-21
  • 2015-04-18
相关资源
最近更新 更多