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

在哪里可以找到Scala中所有特殊特性的列表?,scala,Scala,特殊意味着它们为您提供了其他方式无法获得的功能,所以编译器以特殊的方式处理它们。 例如:“DelayedInit”-将所有init代码转换为主要方法,“Dynamic”-所有方法的代理等目前,我所知道的唯一特殊特性是DelayedInit和Dynamic 从这些特性继承的任何东西也会得到编译器的特殊处理,就像App一样,它是DelayedInit的子类 值得注意的是,任何特性都可能被某些库、框架或编译器插件用作标记,以“为您提供其他方式无法获得的功能”。不过,这两个特性是默认编译器能够特别识别的

特殊意味着它们为您提供了其他方式无法获得的功能,所以编译器以特殊的方式处理它们。
例如:“DelayedInit”-将所有init代码转换为主要方法,“Dynamic”-所有方法的代理等

目前,我所知道的唯一特殊特性是
DelayedInit
Dynamic

从这些特性继承的任何东西也会得到编译器的特殊处理,就像
App
一样,它是
DelayedInit
的子类

值得注意的是,任何特性都可能被某些库、框架或编译器插件用作标记,以“为您提供其他方式无法获得的功能”。不过,这两个特性是默认编译器能够特别识别的唯一特性


除了标记特征,还有一些注释需要特别处理,
scala.annotation
scala.reflect
是找到这些特征的好地方,还有
scala
包中的
@专门化的
注释和几个编译器插件(例如分隔的连续体).

还有
scala.Singleton

这是一个
最终特征
,在编写代码时不能正常使用,但每个使用类似
object Foo
的单例的人都已经间接使用了它

Singleton
被编译器用来扩展Singleton,因此:

scala> object Foo
defined module Foo

scala> Foo.isInstanceOf[Singleton]
res0: Boolean = true

一个小点:delayedIt是“神奇的”特性,App只是使用它。
App
只是出于JVM上构造函数优化的性能原因才“神奇”。通过给它一个
main(args:Array[String])
方法,您可以很容易地创建自己的可执行trait:例如,请参见(已弃用的)
应用程序
trait。