Folgende UDF ist als Ergänzung zur Array.au3 gedacht, welche noch mehr ermöglicht, flexibler ist und grundsätzlich den Programmieralltag vereinfachen soll.
Eigentlich habe ich nur eine Funktion basteln wollen, welche analog zu _ArrayDisplay Arrays hübsch in der Console ausgeben soll (die _Array2String()).
Stattdessen sind ein paar feine Funktionen zusätzlich entstanden und diese habe ich dann durch bereits vorhandene thematisch passende Funktionen aus meiner DynArray.au3 ergänzt.
Ich habe mir Mühe gegeben die UDF sauber und umfangreich durch Funktionsheader zu dokumentieren.
Ebenso gibt es eine umfangreiche Beispieldatei dazu, welche den Umgang mit den wichtigsten Funktionen versucht zu veranschaulichen.
Neben der vollständigen Funktionsliste unten hier meine persönlichen Highlights um eine erste Vorstellung zu erhalten:
- _ArraySlice(): Slice Funktionalität wie von Python bekannt = Maximal flexible kompakt geschriebene Extraktion von Bereichen, Spalten, Zeilen etc. aus einem Array (Beispiel: _ArraySlice($aA, "[:-3][::-1]") = Alle Zeilen bis auf die 3 letzten zurückgeben und dabei die Reihenfolge der Spalten umdrehen) - die Beispiele in der _ArrayPlus_Examples.au3 lohnen hierzu.
- _ArrayCreate(): Arrays inline erstellen als 1D/2D/array-in-array mit vorbelegten Werten oder Erstellung von Sequenzen wie von range (wieder Python) bekannt.
- _Array2String(): Arrays endlich mal schick in der Console ausgeben, inkl. ausrichten am Dezimaltrennzeichen, Rahmen etc.
- Sortieren, suchen, analysieren von Arrays, deren Werte eben keine Standardtypen sind sondern spezielle Sortier/Vergleichs-Verhältnisse haben.
Funktionsliste:
Funktion | Beschreibung |
---|---|
_ArraySlice | Teile von Arrays extrahieren, umsortieren wie beim Array-Slicing von Python |
_ArrayCreate | Erstellung von 1D/2D-Arrays oder Array-In-Arrays in einer Code-Zeile; unterstützt python-ähnliche Range-Syntax zur Erstellung von Sequenzen |
_ArrayRangeCreate | erzeugt eine Sequenz als 1D-Array - hauptsächlich Hilfsfunktion für _ArrayCreate |
_Array2dToAinA | konvertiert ein 2D-Array in ein Array-in-Array |
_ArrayAinATo2d | konvertiert ein Array-in-Array in ein 2D-Array |
_Array1DTo2D | konvertiert ein 1DArray in ein 2D-Array und übernimmt dessen Werte in die 1. Spalte |
_Array2String | gibt ein 1D/2D-Array übersichtlich auf der Konsole oder einer Variablen aus |
_ArrayJoin | Verknüpfung von Arrays wie Joins in SQL |
_ArrayAddGeneratedColumn | Fügt eine Spalte ein, deren Wert sich aus den anderen Werten des Datensatzes ermitteln lässt (wie generated column in SQL) |
_ArrayAlignDec | richtet ein 1D-Array oder eine Spalte eines 2D-Arrays am Dezimalpunkt oder rechtsbündig aus |
_ArrayMap | wendet eine Funktion auf jedes Element eines Arrays an |
_ArrayReduce | reduziert die Elemente eines Arrays auf einen Wert mit einer externen Funktion |
_ArrayFilter | filtert die Elemente eines Arrays mit einer externen Funktion |
_ArrayDeleteByCondition | löscht alle leeren String-Elemente oder solche, die eine benutzerdefinierte Bedingung in einem Array erfüllen |
_ArrayDeleteMultiValues | löscht alle Elemente in einem 1D, welche mehr als einmal auftreten (nicht nur die Duplikate! - also != _ArrayUnique) |
_ArrayRotate | rotiert die Elemente/Zeilen eines 1D/2D-Arrays (verschieben aber dabei werden überlaufende Elemente auf der anderen Seite wieder erscheinen) |
_ArraySortFlexible | sortiert ein Array mit einer benutzerdefinierten Sortierregel |
_ArraySortInsertion | sortiert ein Array mit einer benutzerdefinierten Sortierregel mit dem Insertion-Sort-Algorithmus |
_ArraySortSelection | sortiert ein Array mit einer benutzerdefinierten Sortierregel mit dem Selection-Sort-Algorithmus (minimale Anzahl von Vertauschungen) |
_ArrayIsSorted | prüft, ob ein Array bereits sortiert ist (unter Verwendung einer benutzerdefinierten Vergleichsfunktion) |
_ArrayHeapSortBinary | sortiert ein Array mit dem Binary-Min-Heap-Sort Algorithmus (mit Hilfe einer Benutzer-Vergleichsfunktion) |
_ArrayHeapSortTernary | sortiert ein Array mit dem Ternary-Min-Heap-Sort Algorithmus (mit Hilfe einer Benutzer-Vergleichsfunktion) |
_ArrayMergeSorted | Fügt Werte aus einem sortierten Array oder einen einzelnen Wert in ein anderes sortiertes Array ein |
_ArrayBinarySearchFlex | führt eine binäre Suche für ein entsprechend sortiertes Array unter Verwendung einer individuellen Vergleichsfunktion durch |
_ArrayFindSortedPos | Ermittelt die Einfügeposition eines Elementes in eine sortierte Menge |
_ArrayGetMax | ermittelt das Element mit dem Maximalwert unter Verwendung einer Benutzervergleichsfunktion |
_ArrayGetMin | ermittelt das Element mit dem kleinsten Wert mit Hilfe einer Benutzervergleichsfunktion |
_ArrayMinMax | Größter/kleinster Wert, sowie deren Indizes eines 1D-Arrays, einer Spalte eines 2D-Arrays oder aller Spalten |
_ArrayGetNthBiggestElement | ermittelt das n-te größte Element (z.B.: Medianwert) in einem unsortierten Array, ohne es zu sortieren (schneller) |
Edit: Thematisch eng verwandt ist die ArrayMore.au3 von BugFix . Hab die erst jetzt wieder entdeckt und gesehen, dass sie bereits einige Ideen vorweg genommen hat. Man könnte die also als eine Art geistigen Großvater meiner ArrayPlus-UDF betrachten.