scala的快速排序代码中的“@sp”语法是什么?
我试图从下面的代码中理解这个快速排序代码scala的快速排序代码中的“@sp”语法是什么?,scala,Scala,我试图从下面的代码中理解这个快速排序代码 对象快速排序{ @内联最终def限制:Int=16 最终定义排序[@sp A:Order:ClassTag](数据:数组[A]):Unit=qsort(数据,0,data.length-1) final def qsort[@sp A](数据:数组[A],左:整数,右:整数)(隐式o:Order[A],ct:ClassTag[A]):单位={ if(right-left
对象快速排序{
@内联最终def限制:Int=16
最终定义排序[@sp A:Order:ClassTag](数据:数组[A]):Unit=qsort(数据,0,data.length-1)
final def qsort[@sp A](数据:数组[A],左:整数,右:整数)(隐式o:Order[A],ct:ClassTag[A]):单位={
if(right-left
[@sp A]
的目的是什么?我知道[A]
语法用于泛型,但是添加@sp
有什么作用呢?有人能对这件事有所了解吗
感谢
@sp
是中定义的@specialized
的别名
我们在spire中大量使用了专门化,因此必须在导入中编写@specialized
或重命名变得太单调乏味了
请注意,如果您有单独的包语句,则spire包对象中的定义仅在子包中可见
所以这是有效的
package spire
package math
class Foo[@sp T]
然而这不会
package spire.math
class Foo[@sp T]
scala标准库中也使用了相同的方法。如果您看一个类似的类,请注意package语句由三部分组成
package scala
package collection
package immutable
package scala
package collection
package immutable