set_method_table¶
set_method_table setzt Methoden (Member-Funktionen) für ein Objekt.
-
obj = set_method_table(obj, ssClass)
-
obj = set_method_table(obj, ssClass, bUpdate)
Returnwert
obj ist ein Zeiger auf den ersten Parameter oder 0, wenn ein Fehler aufgetreten ist.
Parameter
-
obj
obj ist ein mit obj_create erzeugtes Objekt, dessen Methoden-Tabelle gesetzt werden soll.
-
ssClass
Um die Methoden-Tabelle zu setzen wird eine Funktion mit dem Namen ssClass + „_method“ aufgerufen, die die Methoden-Tabelle zurück geben muss. Siehe Kommentar.
-
bUpdate
Wenn der Parameter bUpdate TRUE (1) ist, wird die Funktion ssClass +
"_methods"
aufgerufen und die Methoden-Tabelle wird nach_g()._method_table
kopiert. Die Methoden-Tabelle wird dann mit obj_set_methods dem Objekt obj zugewiesen.Wenn der Parameter bUpdate FALSE (0) ist, wird die vorhandene
_g()._method_table
dem Objekt obj zugewiesen.Wenn der Parameter bUpdate nicht angegeben wird, wird der Wert von
_g()._debug
für bUpdate verwendet. Das erstmalige Übersetzen einer UniScript-Datei (F4) setzt_g()._debug = 1
.
Kommentar
Um eine Methoden-Tabelle zu erzeugen, müssen globale Funktionen definiert werden, die dann in eine Tabelle eingetragen werden müssen:
def my_obj_print(this)
{
// ...
}
methodTable = [.
print = "my_obj_print"
];
methodTable ist die Methoden-Tabelle.
Die Funktion set_method_table erwartet, dass eine Funktion mit dem Namen ssClass + „_methods“ existiert, die die Methoden-Tabelle zurück liefert:
def my_methods()
{
return [.
print = "my_obj_print"
];
}
o = [. a = 1, b = 2];
set_method_table(o, "my")
Die Methoden-Tabelle wird dann in der globalen Variablen _g()._method_table.my
(siehe _g) gespeichert und der Zeiger auf das Objekt wird mit
obj_set_methods im Objekt o gespeichert. Mit o.methods
(siehe
obj_methods) kann die Methoden-Tabelle des Objekts erfragt werden.
Beispiel
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | def my_obj_print(this)
{
k = this.keys
for (i in 1:len(k)) {
printf("%s = ", k[i]);
print this[k[i]]
}
}
def my_methods()
{
return [.
print = "my_obj_print",
__print__ = "my_obj_print"];
}
def my_create()
{
this = [.];
set_method_table(this, "my");
return this;
}
o = my_create();
o.a = 1;
o.b = 2;
|
o
print o
o.print()
History
Version | Beschreibung |
---|---|
R2013.2 | Defaultwert von bUpdate geändert (siehe oben) und Dokumentation ergänzt. |
4.1.1 | Neu. |
id-1586543