【问题标题】:How can I learn more about Scala's type relationships?如何更多地了解 Scala 的类型关系?
【发布时间】:2011-10-17 05:33:13
【问题描述】:

这肯定是一个愚蠢的问题,但我很难过。我现在已经阅读了 Odersky 的书,以及我可以得到的所有教程,但我似乎找不到任何解释一些更晦涩的 Scala 类型关系的东西。例如,=:= 是什么?它被引用here,但似乎甚至不在 Scala 语言参考中。是否有一些参考材料可以解释这一点,我错过了?

【问题讨论】:

标签: scala


【解决方案1】:

它只是一个“普通”运算符,尽管它有些晦涩(而且我以前从未使用过或听说过 ;-)。 =:= 运算符在 [magical] Predef object 中定义。

参见第 12.5 节:SLS 中的 Predef 对象:

Predef 对象为 Scala 程序定义标准函数和类型别名。 它 [Predef] 总是隐式导入的,因此它的所有定义的成员都可以在没有限定条件的情况下使用。

(SLS 没有提及=:= 或其他一些内容;许多是“实施细节”。)

编码愉快。

【讨论】:

  • Pedantry:=:= 不是运算符;这是一堂课
  • @Luigi Plinge 我试图弄清楚它是如何应用的,但惨遭失败。 Predef 中这些东西如何工作的逐步“指南”会很好! (知道吗?:-)
【解决方案2】:

Scaladoc 说:

A =:= B 的一个实例证明类型 A 和 B 相等。

我找到它没有任何困难,我理解它也没有任何困难(尽管事先知道这让我有偏见)。为了改进它,我想知道您有什么问题:找到它、理解它,还是两者兼而有之?

【讨论】:

  • 我没有意识到它可能在 Scala API 中——也没有意识到它是一个类!我假设它是某种内置的类型关系,因此在语言定义本身中是期望的。 (Google 无法轻松搜索此类字符串也无济于事。)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-13
  • 1970-01-01
相关资源
最近更新 更多