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
1def my_obj_print(this)
2{
3 k = this.keys
4 for (i in 1:len(k)) {
5 printf("%s = ", k[i]);
6 print this[k[i]]
7 }
8}
9def my_methods()
10{
11 return [.
12 print = "my_obj_print",
13 __print__ = "my_obj_print"];
14}
15def my_create()
16{
17 this = [.];
18 set_method_table(this, "my");
19 return this;
20}
21o = my_create();
22o.a = 1;
23o.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