为什么所有Scala类都从ScalaObject继承,尽管该特性完全为空,并且与AnyRef相比却没有(可见的)功能,而equals()却定义了其他方法?

那样会降低像hashCode()或ojit_code这样的方法调用的速度,因为它需要考虑另一个类(这可能会覆盖方法)吗?

是否可以将AnyRef和ScalaObject折叠到一个类中?

更新:
ScalaObject was eradicated和新的2.10版本的Scala。

最佳答案

ScalaObject插入一个$tag方法,根据library source code for 2.7中的注释,“对于优化与案例类的构造函数匹配的模式匹配表达式是必需的”。由于名称以$开头,因此对于应用程序程序员来说,当然应该将其视为“隐藏”的。在Scala 2.8中,它完全是空的,所以我想它是为了向后兼容。

10-07 18:19