2. 1. 3 Eigenschaftsvariable und Objektprozeduren
Die den Objekten zugeordneten Eigenschaftsvariablen sind Variable im
Namensraum (namespace) des Objekts objCmd, auf die die
Syntax des Tcl-Interpreters voll angewendet werden kann (z.B. set,
incr, unset, append, lappend, ...). Die
Eigenschaftsvariablen und Objektprozeduren werden im Modell
abgespeichert. Das Anlegen des Namensraumes bzw. Operationen im
Namensraum eines Objektes werden durch den Objektbefehl ::
ermöglicht. Im Unterschied
zum einfachen Zugriff auf eine namespace-Variable muss der doppelte
Doppelpunkt von Leerzeichen umgeben sein.
| |
objCmd
::?args?
|
|
Legt den Namensraum objCmd
an, falls noch nicht vorhanden. args
wird durch den Tcl-Interpreter in diesem Namensraum ausgeführt.
|
| |
objCmd
:: set var value
|
|
Belegt im Namensraum objCmd
die Eigenschaftsvariable var
mit dem Wert value.
Namensraum und/oder Variable werden neu angelegt, falls sie nicht
bereits existieren. Auf die Eigenschaftsvariable kann
anschließend wie folgt zugegriffen werden: $::objCmd::var.
|
| |
| objCmd
:: proc {procname} {parlist}
{body} |
|
Legt im Namensraum objCmd
die Prozedur procname an.
Namensraum und/oder Prozedur werden neu angelegt, falls sie nicht
bereits existieren. Auf die Objektprozedur kann anschließend wie
folgt zugegriffen werden: [::objCmd :: procname par1 par2 ...]
.
|
Zur Veranschaulichung werden einige Beispiele für ein Objekt mit
dem Objektbefehl machine1
gezeigt:
| |
machine1 :: set var 10
|
|
Legt erforderlichenfalls einen Namensraum für das Objekt
machine1 und eine Variable mit dem Namen var und
dem Wert 10 an. (Leerzeichen vor und nach ::
beachten!) |
| |
machine1 :: incr var |
|
Erhöht den Wert der Objektvariable var um 1. Die
Variable (und der Namensraum des Objekts) existiert bereits durch das
vorhergehende Kommando. Der gleiche Effekt lässt sich auch mit
folgendem Befehl erreichen: "incr machine1::var".
Gegebenenfalls muss der Namensraum des Objektes extra
adresseirt werden, falls man sich nicht im globalen Namensraum
befindet: "incr ::machine1::var". Die
Standardsyntax funktioniert dagegen unabhängig vom aktuellen
Namensraum.
|
| |
machine1 variables |
|
Gibt eine Liste aller Eigenschaftsvariablen des Objekts machine1
aus. Das ist nahezu identisch mit "info
vars ::machine1::*", jedoch wird hier der
Namensraum
::machine1 vor jeden Variablennamen gesetzt. |
| |
machine1
:: unset var |
|
Löscht die Eigenschaftsvariable var. Das ist
identisch
mit "unset ::machine1::var" |
| |
machine1 :: proc test {} {
puts "Hello World"
}
|
|
Legt erforderlichenfalls einen Namensraum für das Objekt
machine1 und eine Prozedur mit dem Namen test ohne
Parameter und dem Inhalt puts "Hello World" an. Wenn der
Namensraum bereits existiert, kann die Funktion auch durch "proc ::machine1::test
{} {puts "Hello World"}" angelegt werden. |
| |
machine1 :: rename test {} |
|
Löscht die Objektfunktion test. |
| |
| Alle
Eigenschaftsvariablen und Objektprozeduren werden in
den Modelldateien abgespeichert und sind nach dem erneuten Laden des
Modells wieder verfügbar. Neben den Objekten mit eigenen
Objektbefehlen können auch untergeordneten Objekte, wie z.B.
Arbeitsgänge und
Spezifikatoren von Technologien, Variable
und Prozeduren zugeordnet werden. |
|
tech1
pass 3 :: set ag 20
|
|
Legt erforderlichenfalls einen
Namensraum für den
Arbeitsgang 3 der Technologie tech1 und eine
Eigenschaftsvariable mit dem
Namen ag und dem Wert 20 an. Auf die Variable kann
anschließend wie folgt zugegriffen werden: $::tech1::pass::3::ag
|
|
tech1 pass 3 :: unset ag
|
|
Löscht die Objektvariable ag des 3. Arbeitsgangs
der Technologie tech1. |
|
tech1
spec 0 :: set text
"Beschreibung" |
|
Legt erforderlichenfalls einen Namensraum für den
Spezifikator 0 der Technologie tech1 und eine
Eigenschaftsvariable mit
dem Namen text und dem Wert Beschreibung an. Auf die
Variable kann wie folgt zugegriffen werden: $::tech1::spec::0::text |
simcron MODELLER 3.4
Copyright © 2025 simcron
27.02.2025
|