 |
|
BaselScript |
Beschreibung
Hash-array
Hash-array ist ein assoziatives Array, in dem Paare "Schlüssel => Wert" gespeichert werden.
Für solche Arrays werden folgende Operationen unterstützt:
- Paar hinzufügen
- nach einem Paar per Schlüssel suchen
- Paar per Schlüssel löschen
Ein assoziatives Array erlaubt keine Paare mit denselben Schlüsseln!
Der BaselScript-Interpreter kann bis zu 5 solcher Arrays gleichzeitig verwenden.
Arrays werden automatisch nach Schlüsseln sortiert.
Bevor man ein Array in einem Skript verwenden, sollte man dessen Inhalt löschen, andernfalls bleiben die
in den vorherigen Skripten festgelegten Werte im Array.
Mit den Befehlen "clear memory" oder "clear hach_array" werden alle Arrays gelöscht.
Befehle mit hash-array:
Hash-array löschen:
clear hach_array=n
wo n Arraynummer ist.
Paarwerte eingeben
set hash_array=1 key=field/constante value=field/constante [mode=list]
Wenn der Schlüssel bereits existiert und mode=list gesetzt ist, addiert sich der neue Wert zum vorhandenem Paar mit demselben Schlüssel (KEY WERT1,WERT2).
Beispiel für Verwendung "mode = list":
Im Array existiert schon ein Paar "Werkzeug => Hammer".
Es wird ein Paar "Werkzeug => Schraubenzieher" hinzugefügt.
In dem Array wird das Paar "Werkzeug => Hammer, Schraubenzieher" gespeichert.
Ohne "mode = list" kommt dieses Paar "Werkzeug => Schraubenzieher" nicht ins Array,
da der Schlüssel bereits exisiert. i>
Eingabe des Paarwertes aus einfachen Arrays:
set hash_array=N from_arrays=keys_array, values_array
Beispiel:
set hash_array=1 from_arrays=#countries_array,#capitals_array
Paar aus Array entfernen:
remove hash_array=1 key=field/constante
Beispiel:
remove hash_array=1 key="Italy"
Paarauswahl nach Schlüsselwert:
#field = $hash_array(n,key)
n - Arraynummer
Beispiel:
#country = Qatar
#capital = $hash_array(n,#country)
Hash-Array in einfache eindimensionale Arrays kopieren.
Diese Arrays werden automatisch erstellt:
copy hash_array=n key_to=array_name1 value_to=array_name2
n - Arraynummer
Beispiel 1:
Unsere Aufgabe ist, eine assoziative Anordnung zu schaffen, in der Hauptstädte für drei Länder angegeben sind. Dann müssen wir die Hauptstadt per Name eines Landes auswählen.
Ausgangsdaten:
spain -> madrid
germany -> berlin
italy -> rom
scene=1 name="hash array"
section init
// hash-array N 1 löschen
clear hach_array=1
#val3=rom
// Paarwerte eingeben
set hash_array=1 key=spain value=madrid
set hash_array=1 key=germany value=berlin
set hash_array=1 key=italy value=#val3
// Haupstadt wählen
#capital= $hash_array(1,italy)
// Ausgabe
message #capital
// Ergebnis = rom
end section
end scene 1
Beispiel 2:
Unsere Aufgabe ist, ein assoziatives Array zu erstellen, in das die Paare "country => capital"
aus der Datei eingelesen werden.
Dann müssen wir den Namen des Landes anfordern und nach der Hauptstadt suchen.
Ausgangsdaten:
Die Datei example_countries.csv
Verzeichnis: #_directory_files_examples
Inhalt:
Albania;Tirana;ALB;albania.png
Algeria;Algiers;DZA;algeria.png
...
United States;Washington;USA;united_states.png
Uruguay;Montevideo;URY;uruguay.png
Skript:
-------------------------------------------------------------------
scene=1 name="hash array"
section init
clear hash_array=1
// file descriptor
file name=example_countries.csv record=(#countries,#capitals) directory=#_directory_files_examples
// read file in arrays #countries_array and #capitals_array
read file=example_countries.csv
// copy keys and values from arrays to hash array 1
set hash_array=1 from_arrays=#countries_array,#capitals_array
// call dialog for search capital
call dialog=dia
end section
-------------------------------------------------------------
dialog dia
// set title
tile=title text="Please enter country name"
// set text
tile=text name="t1" text="e.g. France etc." color=#777777 style=italic size=25
// input in the field #country
tile=input name=#country
tile=button text=search section=search
tile=button text=x section=back
end dialog
section search
// get value for key = #country
#capital= $hash_array(1,#country)
message #capital
end section
end scene 1