在哪里可以找到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。