val array = Array((for(i <- 0 to 10) yield scala.util.Random.nextInt): _*)
scala.util.Sorting.quickSort(array)
Das "Standard" -Array von Scala ist eine veränderbare Datenstruktur, die dem Array von Java sehr nahe kommt. Im Allgemeinen bedeutet dies, dass ein "Array" nicht sehr skaliert ist, selbst wenn veränderbare Datenstrukturen vorhanden sind. Es erfüllt jedoch einen Zweck. Wenn das Array der richtige Datentyp für Ihre Anforderungen ist, sortieren Sie es so. Es gibt übrigens andere Sortiermethoden für die Objektsortierung.
Ich glaube, ich habe gerade begriffen, was Ihre Frage ist ... Sie müssen keinen impliziten Parameter übergeben (es ist schließlich implizit). Dieser Parameter besagt, dass es eine Möglichkeit geben muss, den Typ K in einen geordneten [K] umzuwandeln. Diese Definitionen existieren bereits für Scalas Klassen, sodass Sie sie nicht benötigen.
Für eine beliebige Klasse können Sie dies folgendermaßen definieren:
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))
Wenn Person von Anfang an befohlen worden wäre, wäre dies kein Problem:
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))