为什么所有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中,它完全是空的,所以我想它是为了向后兼容。