我有一个带有一堆相关例程的对象,它们的所有声明看起来都一样,比如
object Sorting {
def qsort[a <% Ordered[a]] ....
def partition[a <% Ordered[a]] ...
def qselect[a <% Ordered[a]] ...
}
有没有办法在一个地方指定类型约束并将声明减少到类似qsort[a](xs: Stream[a])
甚至更好的东西qsort(xs: Stream[a])
?
目前我决定使用隐式类
object Implicits {
implicit class SortableArray[a <% Ordered[a]](xs: Array[a]) {
def qsort = {...}
}
}
object Application {
import Implicits._
def main(args: Array[String]) = {
val xs = Array(1,2,3)
xs.qsort
}
}