MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame^] | 1 | SYNOPSIS |
| 2 | closure unbound_lambda(mixed *arg, mixed code); |
| 3 | |
| 4 | BESCHREIBUNG |
| 5 | Erzeugt eine Lambda-Closure, die nicht an ein Objekt gebunden ist, |
| 6 | entsprechend einer Lambda-Funktion in LISP. |
| 7 | |
| 8 | Die Closure kann keine Referenz zu globalen Variablen enthalten. |
| 9 | Lfun-Closures werden unveraendert in die Closure eingebunden, da es |
| 10 | kein Ursprungsobjekt fuer diese Closure gibt. |
| 11 | |
| 12 | Bevor die Closure aufgerufen werden kann, muss sie an ein Objekt |
| 13 | gebunden werden. Normale Objekte koennen Closures nur an sich selbst |
| 14 | binden, das Binden an andere Objekte erzeugt eine Schutzverletzung. |
| 15 | |
| 16 | Der Punkt ist, dass previous_object() fuer Aufrufe innerhalb der |
| 17 | Closure auf das Objekt zeigt, das bind_lambda() aufgerufen hat, und |
| 18 | alle objekt- oder uid-basierten Sicherheitschecks beziehen sich |
| 19 | auf jenes Objekt. |
| 20 | |
| 21 | Das erste Argument <*arg> ist ein Array, das die Argumente (Symbole) |
| 22 | enthaelt, die an die Closure uebergeben werden, wenn diese mit |
| 23 | funcall() oder apply() ausgewertet wird. Das zweite Argument <code> |
| 24 | enthaelt den Code der Closure. |
| 25 | |
| 26 | SIEHE AUCH |
| 27 | closures(LPC), lambda(E), apply(E), funcall(E), bind_lambda(E) |