関連する一連のルーチンを持つオブジェクトがあり、それらの宣言はすべて同じように見えます。
object Sorting {
def qsort[a <% Ordered[a]] ....
def partition[a <% Ordered[a]] ...
def qselect[a <% Ordered[a]] ...
}
型制約を 1 か所で指定し、宣言を次のように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
}
}