3.4 C-Closures Korrektur einreichen Original anzeigen

Wenn eine C-Funktion erstellt wird, ist es möglich, Werte mit dieser zu verknüpfen – also C-Closures zu erstellen; diese Werte werden freie Variablen genannt und sind für die Funktion bei jedem Aufruf zugreifbar. (s. lua_pushcclosure).

Immer, wenn eine C-Funktion aufgerufen wird, werden ihre freien Variablen an einem spezifischen Pseudo-Index hinterlegt. Diese Pseudo-Indizes werden durch das Makro lua_upvalueindex erzeugt. Der erste Wert, welcher mit einer Funktion verknüpft wird, ist an der Position lua_upvalueindex(1) usw. Jeder Zugriff auf lua_upvalueindex(n) – wobei n größer als die Anzahl der freien Variablen der aktuellen Funktion (aber nicht größer als 256) ist – liefert einen akzeptablen (aber ungültigen) Index.