Sammlungen zusammenfassen und sortieren

Automatisch übersetzt von Deepl

4D v16 R6 opens a wide range of possibilities to manage collections. MDas Zusammenführen von zwei Sammlungenzu einer, das Klonen oder einfach nur das Ordnen einer Sammlung ist so einfach wie der Aufruf einer Methode. Das spart wertvolle Zeit, wenn Sie zum Beispiel zwei Sammlungen verketten, nur die unterschiedlichen Werte behalten oder sortieren müssen.

Dieser Artikel ist Teil einer Serie, in der gezeigt wird, wie Sammlungen mit den in 4D v16 R6 hinzugefügten Methoden bearbeitet werden können. Um noch mehr zu erfahren, laden Sie unser Datenbankbeispiel herunter, das 12 verschiedene Beispiele enthält, die zeigen, was Sie mit Auflistungsmethoden tun können!

Datenbank-Beispiel: Verwalten von Sammlungen

Kopieren einer Sammlung

Tiefe Kopie

Die Methode copy Methode gibt eine ausführliche Kopie der Sammlungsinstanz zurück. Eine tiefe Kopie bedeutet, dass alle Elemente in der ursprünglichen Sammlung dupliziert werden und keine Referenz mit der zurückgegebenen Sammlung teilen.

Im folgenden Beispiel wird durch die Ausführung einer tiefen Kopie mit der copy Methode ein neues Element zu $col2 (a copy of the first collection – $col). An zusätzliches Element wird hinzugefügt zu $col2, however $col remains unchanged:

//Erstellen einer Sammlung
$col
:=NeueSammlung("a"; "b"; "c"; "d"; "e")
//Erstellen einer tiefen Kopie der ersten Sammlung
$col2:=$col.copy($col)
//ein neues Element zur Kopie der ersten Sammlung hinzufügen
$col2.push("f")
// $col=["a", "b", "c", "d, "e"]

// $col2=["a", "b", "c", "d, "e", "f"]

Unvollständige Kopie

Wenn Sie eine oberflächliche Kopie einer Sammlung erstellen, teilen die Elemente der ursprünglichen Sammlung ihre Referenzen mit der zurückgegebenen Sammlung. Wenn Sie zum Beispiel eine Sammlung erstellen, eine typische flache Kopie davon machen und dann ein neues Element zu der Kopie hinzufügen ($col2)), wird die ursprüngliche Sammlung ($col) die Änderung ebenfalls widerspiegeln, da $col und $col2 ihren Verweis gemeinsam nutzen:

//
$col
:
=NeueSammlung("a"; "b"; "c"; "d"; "e")
//eine flache Kopie der ersten Sammlung erstellen
$col2:=$col

//ein neues Element in die Kopie der ersten Sammlung einfügen

$col2.push("f")
// $col2=$col=["a", "b", "c", "d, "e", "f"]

Sie können eine flache Kopie eines Teils einer Sammlung erstellen, indem Sie die slice Methode erstellen:

//create a collection
$col
:=New collection("a"; "b"; "c"; "d"; "e")
// Copy from index 2 and stop at end of collection -1
$col2 :=$col.slice(2;-1)
//$col2=[c,d]

Kombinieren von Sammlungen

Die Verkettung zweier Sammlungen kann entweder mit der Methode concat oder combine Methoden erfolgen.

Die Methode concat Methode gibt eine neue Sammlung zurück, die die Verkettung der beiden Sammlungen enthält:

//create 2 collections
$col
:=NeueSammlung("a"; "b"; "c")
$col2:=NeueSammlung(1;2;3)
//die 2 Sammlungen zu einer 3. Sammlung zusammenfassen
$col3:=$col.concat($col2)
//$col3=["a", "b", "c",1,2,3]

Die Methode combine Methode fügt jedes Element einer Sammlung (als Parameter übergeben) an das Ende der ursprünglichen Sammlung an:

//create 2 collections
$col
:=NeueSammlung("a"; "b"; "c")
$col2:=NeueSammlung(1;2;3)
//die zweite Sammlung am Ende der ersten Sammlung hinzufügen
$col.combine($col2)
//$col=["a", "b", "c",1,2,3]

Die Methode distinct Methode erstellt eine neue Sammlung, die nur unterschiedliche Werte der ursprünglichen Sammlung enthält:

$col:=New collection("a"; "b"; "c"; "a"; "b"; "c"; "d"; "e")
$col2 :=$col.distinct()
//$col2=[a,b,c,d,e]

Sortieren einer Sammlung

Um eine Sammlung zu sortieren, können Sie die sort oder orderBy Methoden verwenden. Die Methode sort Methode verändert die ursprüngliche Sammlung, während orderBy eine völlig neue (flache Kopie), sortierte Sammlung zurückgibt, aber die ursprüngliche Sammlung nicht verändert:

$col:=NeueSammlung("a"; "b"; "c"; "a"; "b"; "c"; "d"; "e")
$col2:=$col.orderBy()
//$col2=["a", "a", "b", "b", "c", "c", "d", "e"]

//$col=["a", "b", "c", "a", "b", "c", "d", "e"]

$col.sort()
//$col=["a", "a", "b", "b", "c", "c", "d", "e"]

Sie können eine Sammlung auch sortieren, indem Sie sort oder orderByMethodsortieren, was einen Rückruf der Methode erfordert:

$col:=NeueSammlung("Orange"; "Apfel"; "Traube"; "Birne"; "Banane"; "Feige"; "Brombeere"; "Maracuja")
$col2:=$col.orderByMethod("WordLength")
//$col2=[Passionsfrucht,Brombeere,Orange,Banane,Apfel,Traube,Birne,Feige]
$col.sort("WordLength")
//$col=[Passionsfrucht,Brombeere,Orange,Banane,Apfel,Traube,Birne,Feige]

Wobei die Rückrufmethode WordLength eine Ihrer Projektmethoden ist:

$1.result:=Length(String($1.value))>Length(String($1.value2))

Schließlich können Sie eine tiefgehende Kopie einer Sammlung mit allen Elementen in umgekehrter Reihenfolge erstellen, indem Sie reverse:

$col:=NeueSammlung(1;3;5;2;4;6)
$col2:=$col.reverse()
//$c2=[6,4,2,5,3,1]

Fabrice Mainguené
- Product Owner -Fabrice Mainguené gehört seit November 2016 zum 4D Program Team. Als Product Owner ist er verantwortlich für das Schreiben der User Stories und deren Umsetzung in funktionale Spezifikationen. Seine Aufgabe ist es auch, sicherzustellen, dass die gelieferte Funktionsimplementierung den Kundenanforderungen entspricht.Nach seinem Bachelor-Abschluss in Informatik am CNAM arbeitete Fabrice als Windev-Entwickler bei einem kleinen Software-Verlag. Danach arbeitete er für verschiedene Unternehmen in Industrie und Handel als Windev- und Webentwickler sowie als technischer Berater für neue Funktionen.