.. highlightlang:: us .. index:: set_method_table .. _set_method_table: set_method_table ================ .. us.tag set_method_table GERMAN obj New411 Changed5502 :ref:`set_method_table` setzt Methoden (Member-Funktionen) für ein Objekt. .. function:: obj = set_method_table(obj, ssClass) obj = set_method_table(obj, ssClass, bUpdate) .. us.return **Returnwert** *obj* ist ein Zeiger auf den ersten Parameter oder 0, wenn ein Fehler aufgetreten ist. .. us.params **Parameter** .. uparam:: obj *obj* ist ein mit :ref:`obj_create` erzeugtes Objekt, dessen Methoden-Tabelle gesetzt werden soll. .. uparam:: 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. .. uparam:: 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 :ref:`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``. .. us.comment **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 :ref:`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 :ref:`_g `) gespeichert und der Zeiger auf das Objekt wird mit :ref:`obj_set_methods` im Objekt *o* gespeichert. Mit ``o.methods`` (siehe :ref:`obj_methods`) kann die Methoden-Tabelle des Objekts erfragt werden. .. us.example **Beispiel** .. code-block:: us :linenos: :emphasize-lines: 9-14,18 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() .. us.history **History** .. list-table:: :header-rows: 1 * - Version - Beschreibung * - R2013.2 - Defaultwert von *bUpdate* geändert (siehe oben) und Dokumentation ergänzt. * - 4.1.1 - Neu. .. seealso:: :ref:`uberblick-uniscript-objekte`, :ref:`obj_set_methods`, :ref:`obj_methods`, :ref:`obj_set_parent`, :ref:`obj_parent` :sub:`id-1586543`