代码之家  ›  专栏  ›  技术社区  ›  soc Bhuwan Tripathi

“ScalaObject”为什么存在?

  •  10
  • soc Bhuwan Tripathi  · 技术社区  · 15 年前

    为什么所有Scala类都继承自 ScalaObject 尽管这个特征完全是空的,没有(可见的?)功能与 AnyRef ,它定义了其他方法?

    equals() hashCode() 因为它需要考虑另一个类(可能会重写这些方法)?

    更新: was eradicated 使用新的2.10版本的Scala。

    3 回复  |  直到 13 年前
        1
  •  11
  •   om-nom-nom Dennis Williamson    14 年前

    ScalaObject 插入 $tag library source code for 2.7 ,用于优化在case类的构造函数上匹配的模式匹配表达式 $ 当然,对于应用程序程序员来说,它应该被认为是“隐藏的”。在Scala2.8中,它是完全空的,所以我想它是为了向后兼容。

        2
  •  7
  •   Randall Schulz    15 年前

        3
  •  4
  •   Dave Griffith    15 年前

    它也为静态分析提供了一个方便的钩子。例如,假设您有一个工具可以搜索代码库(编译或不编译),并告诉您可以通过从这些类中提取特征并为这些类创建隐式转换来改进内聚性/耦合性/层平衡/您拥有什么的度量。这个工具只会明智地报告那些可以从继承ScalaObject的类中提取出来的特性,同时报告从任何Java类中进行的有利可图的隐式转换。同样的工具会报告ScalaObject子类的任何可能的“null”返回(Option或类似的选项通常是更好的选择),而忽略Java类的null返回。