在哪里可以找到Scala中所有特殊特征的列表?

yur*_*ura 9 scala

特殊意味着它们为您提供了无法获得的功能,因此它们以特殊方式由编译器处理.示例:'DelayedInit' - 将所有init代码转换为main方法,'Dynamic' - 所有方法的代理等

Kev*_*ght 12

目前,我所知道的唯一特殊特征是DelayedInitDynamic.

继承自这些特征的任何东西也会得到编译器的特殊处理,就像使用App哪个子类一样DelayedInit.

值得注意的是,任何特征都可能被某些库,框架或编译器插件用作标记,以"为您提供无法获得的功能".这两个是默认编译器特别识别的唯一特征.

除了标记特征之外,还有一些注释需要特别处理,scala.annotation并且scala.reflect是查找这些@specialized注释的好地方,包中还有注释scala和编译器插件中的一些注释(例如分隔连续).


soc*_*soc 10

还有scala.Singleton.

它是一个final trait并且在编写代码时不能正常使用,但是每个人都使用了一些类似的单例object Foo已经间接使用它.

Singleton 编译器使用它来扩展单例,因此:

scala> object Foo
defined module Foo

scala> Foo.isInstanceOf[Singleton]
res0: Boolean = true
Run Code Online (Sandbox Code Playgroud)