partition()

Zusammenfassung

Unterteilt die Elemente einer Liste in eine Liste mit Listen, die jeweils die Listen elemente enthalten, die die zugehörigen Schlüssel- und Testkriterien erfüllen. Allerdings können werde die Reihenfolge der Untergruppen noch die Reihenfolge der darin enthaltenen Elemente als verlässlich angesehen werden.

Syntax

partition ( list As List, _
            Optional key As Name = :Identity, _
            Optional test As Name = :Equal) As List 
Argument Typ Beschreibung
List Liste Die zu unterteilende Liste
key Name Optional. Der Name der Funktion, die für jedes Element der Liste aufgerufen werden soll. Vorgabe ist :Identity. Der Rückgabewert dieser Funktion wird mit den Kriterien der Testfunktion verglichen.
test Name Optional. Der Name der Testfunktion, die auf die Ergebnisse von key aus der Liste angewendet werden soll. Vorgabe ist :Equal.

Beispiel 1

Intent ->partition({"a", "b", "c", "c", "e", "z", "x", "c", "e"}) 
--> {{"x"}, {"z"}, {"e", "e"}, {"c", "c", "c"}, {"b"}, {"a"}} 

Beispiel 2

Intent ->partition({"a", "c", "b", "c", 1, 3, "c", 3, 2, 1}) 
--> {{2}, {3, 3}, {1, 1}, {"b"}, {"c", "c", "c"}, {"a"}} 

Beispiel 3

Intent ->partition({:a, :c, "b", :c, 1.1, 3, :c, 3, 2, 1}, key := :integer?) 
--> {{ 1, 2, 3, 3}, {c, 1.1, c, "b", c, a}} 
In diesem Beispiel wurden die Elemente mit der folgenden benutzerdefinierten Funktion in zwei Listen unterteilt. Eine enthält ganzzahlige, die andere nicht ganzzahlige Werte.
Function integer?(item As Any) As Boolean 
    integer? = (typeName(item) = :integer) 
End Function 

Beispiel 4

Intent >partition({"abc", "123", "24", "xyz", "35"}, key := :length) 
--> {{"35", "24"}, {"xyz", "123", "abc"}} 
Die Reihenfolge des Ergebnisses kann auch abweichen.