val array = Array((for(i <- 0 to 10) yield scala.util.Random.nextInt): _*)
scala.util.Sorting.quickSort(array)
„Domyślna” tablica Scali to zmienna struktura danych, bardzo zbliżona do tablicy Javy. Mówiąc ogólnie, oznacza to, że „tablica” nie jest bardzo skalowalna, nawet jeśli występują zmienne struktury danych. Służy to jednak celowi. Jeśli tablica jest odpowiednim typem danych dla twoich potrzeb, to tak ją sortujesz. Nawiasem mówiąc, istnieją inne metody sortowania dotyczące sortowania obiektów.
Myślę, że właśnie zrozumiałem, jakie jest twoje pytanie ... nie musisz przekazywać żadnego niejawnego parametru (w końcu jest on niejawny). Ten parametr istnieje po to, aby powiedzieć, że musi istnieć sposób na przekształcenie typu K w Ordered [K]. Te definicje już istnieją dla klas Scali, więc ich nie potrzebujesz.
Dla dowolnej klasy możesz to zdefiniować w ten sposób:
scala> case class Person(name: String)
defined class Person
scala> val array = Array(Person("John"), Person("Mike"), Person("Abe"))
array: Array[Person] = Array(Person(John), Person(Mike), Person(Abe))
scala> scala.util.Sorting.quickSort(array)
<console>:11: error: no implicit argument matching parameter type (Person) => Ordered[Person] was found.
scala.util.Sorting.quickSort(array)
^
scala> class OrderedPerson(val person: Person) extends Ordered[Person] {
| def compare(that: Person) = person.name.compare(that.name)
| }
defined class OrderedPerson
scala> implicit def personToOrdered(p: Person) = new OrderedPerson(p)
personToOrdered: (p: Person)OrderedPerson
scala> scala.util.Sorting.quickSort(array)
scala> array
res8: Array[Person] = Array(Person(Abe), Person(John), Person(Mike))
Teraz, gdyby osoba została zamówiona na początku, nie stanowiłoby to problemu:
scala> case class Person(name: String) extends Ordered[Person] {
| def compare(that: Person) = name.compare(that.name)
| }
defined class Person
scala> val array = Array(Person("John"), Person("Mike"), Person("Abe"))
array: Array[Person] = Array(Person(John), Person(Mike), Person(Abe))
scala> scala.util.Sorting.quickSort(array)
scala> array
res10: Array[Person] = Array(Person(Abe), Person(John), Person(Mike))