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