blob: 804b1b5e6dbc544c91cbac884fe5d30356472fa3 [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001SYNOPSIS
2 closure unbound_lambda(mixed *arg, mixed code);
3
4BESCHREIBUNG
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
26SIEHE AUCH
27 closures(LPC), lambda(E), apply(E), funcall(E), bind_lambda(E)