LoriotPro Extended Edition Documentation language LUA

TDM


Les fonctions du noyau LUA


Ces fonctions permettent d'accéder aux fonctionnalités du noyau de Lua. Nous n'entrerons pas dans le détail au sujet de toutes les matières ici.

assert(test [, message ])

Semblable assert() à la fonction en C. Si la condition d'essai est fausse ou zéro une erreur est augmenté ; autrement examinez est retourné. Un message facultatif est retourné au lieu d'un message système. En outre, voyez error() la fonction. Par exemple,

> assert(1==1) -- aucune erreur comme essai 
n'était > assert(1==0) stdin:1 vrai : l'affirmation a échoué 
! traceback de pile : [ C ] : dans le ` de fonction 
affirmez 'stdin:1 : dans le gros morceau principal [ C ] : 
? > assert("green"=="blue", "couleurs") stdin:1 non égal 
: Traceback non égal de pile de couleurs : [ C ] : 
dans le ` de fonction affirmez 'stdin:1 : dans le gros 
morceau principal [ C ] : ?

Beaucoup de fonctions de Lua, comme io.open, renvoient une valeur sur le succès, ou renvoient zéro et un message d'erreur sur l'échec. Ceci fonctionne bien avec assert:

dossier = assert(io.open(filename))

Ce ou s'ouvre filename pour la lecture et l'assigne à file, ou elle soulève une erreur avec le message en la deuxième valeur de retour de io.open.

collectgarbage([limit ])

Fixe la limite d'attribution de mémoire à laquelle le collecteur d'ordures s'appellera. Si la nouvelle limite est moins que la quantité courante d'attribution de mémoire de Lua, ou aucun argument n'est donné, le collecteur s'appelle immédiatement. Voyez le GarbageCollectionTutorial pour plus d'information dessus.

> = gcinfo() -- trouvez la stat courante de mémoire, 
c.-à-d. 21kb a employé 21 35 > bigalloc = string.rep('a ', 100000) 
-- créez une grande corde > = le gcinfo() -- 164kb a assigné 
maintenant 164 327 > collectgarbage() -- collection de force > = 
gcinfo() -- nous avons libéré une certaine mémoire sur la 
collection 139 278 > bigalloc = zéro -- libèrent la corde que nous 
avons créée > = gcinfo() -- il n'est pas supprimé jusqu'à ce que 
ses 140 278 rassemblés > collectgarbage() -- nous rassemblons > = 
gcinfo() -- il est supprimé 29 59

dofile(filename)

POUR FAIRE : Ouvre le dossier appelé et exécute son contenu comme gros morceau de Lua. Une fois appelé sans arguments, dofile exécute le contenu de l'entrée standard (stdin). Renvoie n'importe quelle valeur retournée par le gros morceau. En cas d'erreurs, propagations dofile l'erreur à son visiteur (c'est-à-dire, elle ne fonctionne pas en mode protégé).

error(message [, de niveau ])

POUR FAIRE : Termine la dernière fonction protégée appelée, et renvoie le message comme message d'erreur. De fonction d'erreur retours jamais. L'argument de niveau indique où le message d'erreur dirige l'erreur. Avec le niveau 1 (le défaut), la position d'erreur est où la fonction erreur s'est appelée. Nivelez 2 points l'erreur à où la fonction qui a appelé l'erreur s'est appelée ; et ainsi de suite.

_ G

_G est une variable globale qui se dirige à l'environnement global. Par exemple pour montrer toutes les variables de globals nous pourrions faire ce qui suit :

> table.foreach(_G, table de corde de print) : 
fonction de 00357098 xpcall : fonction 00354E10 tostring 
: fonction du gcinfo 00354708 : fonction du loadlib 
00354E90 : table d'OS 00358B40 : 00355AE0 déballent la 
fonction : 003547C8 le niveau 2 exigent la fonction : 
fonction du getfenv 00354F90 : 00354548... -- etc...

_G est également récursif en tant que _G vies dedans _G! C.-à-d. le suivant tout le point à la même table (qui tient les variables globales) :

> = _ table de G : 00353710 > = _ table de G._G : 
00353710 > = _ table de G._G._G : 00353710

Lua lui-même n'emploie pas cette variable, ainsi changer sa valeur n'affecte aucun environnement. Vous devriez employer setfenv() pour changer des environnements.

getfenv(f)

TODO : Renvoie l'environnement courant en service par la fonction. f peut être une fonction de Lua ou un nombre, qui indique la fonction à ce niveau de pile : Le niveau 1 est la fonction appelle le getfenv. Si la fonction donnée n'est pas une fonction de Lua, ou si f est 0, le getfenv renvoie l'environnement global. Le défaut pour f est 1. si l'environnement a "_ _ un champ de fenv", renvoie la valeur associée, au lieu de l'environnement.

getmetatable(object)

POUR FAIRE : Si l'objet n'a pas un metatable, renvoie zéro. Autrement, si l'objet metatable a "_ _" un champ metatable, renvoie la valeur associée. Autrement, retours le metatable de l'objet donné.

gcinfo()

POUR FAIRE : Retours deux résultats : le nombre de K bytes de mémoire dynamique que Lua emploie et du seuil courant de collecteur d'ordures (aussi en K bytes).

ipairs(t)

TODO : Renvoie une fonction d'iterator, la table t, et 0, de sorte que la construction for i,v in ipairs(t) do ... end réitère au-dessus des paires (1, t[1 ]), (2, t[2 ])..., jusqu'à la première clef de nombre entier avec une valeur de zéro dans la table.

loadfile(filename)

TODO : Charge un dossier comme gros morceau de Lua (sans le courir). S'il n'y a aucune erreur, des retours le gros morceau compilé comme fonction ; autrement, zéro de retours plus le message d'erreur. L'environnement de la fonction retournée est l'environnement global.

loadlib(libname, funcname)

Cette fonction lie le programme avec la bibliothèque dynamique de C "libname". À l'intérieur de cette bibliothèque, elle recherche une fonction "funcname" et renvoie cette fonction comme fonction de C. libname doit être le nom de fichier complet de la bibliothèque de C, y compris n'importe quels chemin et prolongation certains. Cette fonction n'est pas soutenue par la norme ANSI C. En tant que tels, elle est seulement disponible sur quelques plateformes (Windows, Linux, Solaris, schéma, plus d'autres systèmes d'Unix qui soutiennent la norme de dlfcn).

loadlib vous donne la capacité d'augmenter vos manuscrits de lua avec des fonctions de C écrites par art de l'auto-portrait. L'exemple suivant devrait vous donner quelques conseils si vous voulez mettre en application votre propre substance. Ceci a été examiné dans Linux mais devrait travailler à d'autres plateformes aussi. Vous devriez savoir créer les bibliothèques des programmes résultants partagées. Tous les dossiers dans l'exemple devraient être dans le même annuaire.

/ * mylib.c pourrait ressembler à ceci : */# 
incluent "lua.h" # incluent "" de stdio.h/* cette fonction sera 
exportée vers le lua */lua_myfunc(lua_State interne statique * l) 
{printf("blabla") ; retour 0 ; }/* cette fonction est 
notre initialisation */init(lua_State interne * l) {fonctions 
personnelles printf("Registering") ; lua_register(l, "myfunc", 
lua_myfunc) ; printf("Done s'enregistrant") ; retour 0 ; 
}

Compilez-maintenant le comme bibliothèque (dans * niez ou Cygwin) :

GCC - Mur - g - O2 - lua-config partagées de ` -- 
include` - c mylib.c - GCC mylib.o - mur de o mylib.o - g - O2 - 
lua-config partagées de ` -- lua-config de ` d'include` -- libs` - o 
mylib.a

Après que ceci vous devrait avoir un dossier appelé mylib.a, c'est notre bibliothèque. Laisse maintenant écrire un manuscrit simple d'essai dans le lua :

luainit = loadlib("./mylib.a", "init") -- appelez 
maintenant la fonction enregistrée par print("New de luainit() de 
routine d'initialisation : ".. myfunc) -- commencez le nouveau 
print("well de myfunc() de fonction fait.")

L'appui d'email est fourni par l'auteur de cet exemple @ filet de < dottt > de gmx du l'< aat > reflex-2000

loadstring(string [, chunkname ])

TODO : Charge une corde comme gros morceau de Lua (sans le courir). S'il n'y a aucune erreur, des retours le gros morceau compilé comme fonction ; autrement, zéro de retours plus le message d'erreur. L'environnement de la fonction retournée est l'environnement global. Le chunkname facultatif de paramètre est le nom à employer dans des messages d'erreur et corrige l'information.

next(table [, index ])

POUR FAIRE : Permet à un programme de traverser tous les champs d'une table. Son premier argument est une table et son deuxième argument est un index dans cette table après renvoie le prochain index de la table et de la valeur liées à l'index. Une fois appelé avec zéro en tant que son deuxième argument, prochains retours le premier index de la table et son valeur associée. Une fois appelé avec le dernier index, ou avec zéro dans une table vide, prochain zéro de retours. Si le deuxième argument est absent, alors il est interprété comme zéro. Lua n'a aucune déclaration des champs ; Il n'y a aucune différence entre un champ non actuel dans une table ou un champ avec zéro de valeur. Par conséquent, considère après seulement des champs avec des valeurs de non-zéro. L'ordre dans lequel les index sont énumérés n'est pas indiqué, même pour des index numériques. (pour traverser une table dans l'ordre numérique, employez un numérique pour ou les ipairs fonctionnent.)

pairs(t)

POUR FAIRE : Renvoie la prochaine fonction et la table t (plus zéro), de sorte que la construction pour k,v dans le pairs(t) ... extrémité

pcall(f, arg1, arg2...)

POUR FAIRE : Fonction f d'appels avec les arguments donnés en mode protégé. Cela signifie qu'aucune erreur à l'intérieur de f n'est propagée ; au lieu de cela, le pcall décèle l'erreur et renvoie un code de statut. Son premier résultat est le code de statut (un booléen), qui est vrai si l'appel réussit sans erreurs. Dans un tel cas, le pcall renvoie également tous les résultats de l'appel, après ce premier résultat. En cas de n'importe quelle erreur, le pcall renvoie faux plus le message d'erreur.

print(e1, e2...)

print peut être passé à tout nombre de virgule seperated les arguments qu'il imprime les valeurs de au stdout. print des utilisations tostring de convertir les arguments en corde forment pour être imprimées. Par exemple.

> print(1,2, "bouclent ma chaussure", 22/7) 1 2 bouclent 
ma chaussure 3.1428571428571

print est très simple et pas le recurse dans des tables imprimant le contenu, il imprimera juste le type et une identification unique.

>}) table print({1,2,3 : 002FE9C8

print ne compose pas le texte. Afin de faire ceci vous devriez employer string.format() la fonction en même temps que print (voir le StringLibraryTutorial) par exemple,

> print(string.format("Pi est approximativement 
%.4f", 22/7)) pi est approximativement 3.1429

rawequal(v1, v2)

POUR FAIRE : Vérifie si v1 est égal à v2, sans appeler n'importe quel metamethod. Renvoie un booléen.

rawget(table, index)

POUR FAIRE : Obtient la valeur réelle du table[index ], sans appeler n'importe quelle table de metamethod. doit être une table ; l'index est n'importe quelle valeur différente de zéro.

rawset(table, index, valeur)

POUR FAIRE : Place la valeur réelle du table[index ] à la valeur, sans appeler n'importe quelle table de metamethod. doit être une table, l'index est n'importe quelle valeur différente de zéro, et la valeur est n'importe quelle valeur de Lua.

require(packagename)

POUR FAIRE : Charge le paquet donné. La fonction commence par regarder dans la table _ CHARGÉE pour déterminer si le packagename est déjà chargé. Si elle est, exigez alors les retours la valeur que le paquet a renvoyée quand il a été chargé la première fois. Autrement, il recherche un chemin recherchant un dossier pour charger.

setfenv(f, table)

POUR FAIRE : Place l'environnement courant à employer par la fonction donnée. f peut être une fonction de Lua ou un nombre, qui indique la fonction à ce niveau de pile : Le niveau 1 est la fonction appelle le setfenv.

setmetatable(table, metatable)

POUR FAIRE : Place le metatable pour la table donnée. (vous ne pouvez pas changer le metatable d'un userdata de Lua.) Si metatable est zéro, enlève le metatable de la table indiquée. Si le metatable original a "_ _" un champ metatable, soulève une erreur.

tonumber(e [, base ])

POUR FAIRE : Essaye de convertir son argument en nombre. Si l'argument est déjà un nombre ou un convertible de corde à un nombre, alors le tonumber renvoie ce nombre ; autrement, il renvoie zéro. Un argument facultatif indique la base pour interpréter le numéro. La base peut être n'importe quel nombre entier entre 2 et 36, inclus. Dans les bases au-dessus de 10, le ` A de lettre '(en supérieur ou minuscule) représente 10, le ` B 'représente 11, et ainsi de suite, avec le ` Z 'représentant 35. Dans la base 10 (le défaut), le nombre peut avoir une partie décimale, comme une pièce facultative d'exposant (voyez 2.2.1). Dans d'autres bases, seulement des nombres entiers non signés sont acceptés.

tostring(e)

Reçoit un argument de n'importe quel type et le convertit en corde dans un format raisonnable. Pour la commande complète de la façon dont des nombres sont convertis, format d'utilisation (voyez 5.3). Si le metatable de e a "_ _" un champ tostring, tostring appelle la valeur correspondante avec e comme argument, et emploie le résultat de l'appel en tant que son résultat.

tostring convertit son argument (juste son premier argument s'il y a plus de d'un) en corde et retours qui ficellent. print est employer mis en application tostring ainsi vous êtes probablement déjà au courant du format de rendement. Des valeurs simples (nombres, chaînes de caractères , booleans, et zéro) sont converties comme vous prévoyez probablement. Des Tableaux, Userdata, et les fils, sont imprimés comme table de ` : ', userdata de ` : ', ou fil de ` : ', suivi de l'adresse d'un objet interne d'interprète (qui devrait dans aucun cas être compté au moment).

Notez cela différent print, tostring n'imprimez rien, lui les convertis justes son argument à une corde et des retours il.

tostringle 'comportement de s est extensible. Si la valeur à convertir a un metatable avec __tostring une entrée puis que l'entrée s'appelle avec la valeur à convertir et le résultat de cet appel est retourné. Ceci vous permet de changer comment tostring des travaux sur (certaines) tables, en leur donnant un metatable avec __tostring une fonction qui exécute la conversion que vous voulez.

type(v)

type renvoie une corde décrivant le type de l'objet passé à lui.

> = type(1), type(true), type("hello"), type({}), fonction
booléenne de table de corde de nombre de fin de type(function())

La note, le type de nil est "zéro".

> = zéro de type(nil)

Les types possibles retournés dans Lua 5.0 sont : "numérotez", "corde", "booléen," table "," fonction "," fil ", et" userdata ". Un "fil" est un coroutine, et l'"userdata" est un type de données de C avec une référence à lui dans Lua.

unpack(list)

unpack prend les éléments d'une liste et les renvoie, par exemple :

> = unpack({1,2,3}) 1 2 3 > = unpack({"one", 2, 6*7}) un 2
42

Le nombre d'éléments déballés est défini par la taille de la table, qui n'est pas nécessairement le nombre d'éléments dans la table ! Voyez le TableLibraryTutorial pour plus de détails sur ceci.

> t = {"one", 2, 6*7} > t.n = 2 > = table.getn(t) 2 > = 
unpack(t) un 2

_ VERSION

Directement de du manuel, _VERSION est "une variable globale (pas une fonction) cette des prises une corde contenant la version courante d'interprète."

> = _ VERSION Lua 5.0

le xpcall(f, errent)

POUR FAIRE : Cette fonction est semblable au pcall, sauf que vous pouvez placer une nouvelle fonction f d'appels de xpcall de traiteur des erreurs en mode protégé, employant errez en tant que traiteur des erreurs. Aucune erreur à l'intérieur de f n'est propagée ; au lieu de cela, le xpcall décèle l'erreur, appelle la fonction d'errement avec l'objet original d'erreur, et renvoie un code de statut. Son premier résultat est le code de statut (un booléen), qui est vrai si l'appel réussit sans erreurs. Dans un tel cas, le xpcall renvoie également tous les résultats de l'appel, après ce premier résultat. En cas de n'importe quelle erreur, le xpcall renvoie faux plus le résultat de errent.

www.loriotpro.com