Passer au contenu principal
Version: bleeding-edge 🩸

Types de base

Types Lua

info

Pour plus d'informations et de tutoriels, veuillez regarder la Documentation officielle sur Lua.

number

Le type number représente des nombres réels (flottants à double précision). Lua n'a pas de type entier, car il n'en a pas besoin. Les erreurs arithmétiques à virgule flottante font l'objet d'une idée fausse très répandue et certaines personnes craignent que même un simple incrément puisse devenir bizarre avec des nombres à virgule flottante. Le fait est que, lorsque vous utilisez un double pour représenter un nombre entier, il n'y a aucune erreur d'arrondi (sauf si le nombre est supérieur à 100 000 000 000 000). Plus précisément, un nombre Lua peut représenter n'importe quel nombre entier long sans problème d'arrondi. De plus, la plupart des processeurs modernes effectuent l'arithmétique en virgule flottante aussi rapidement que l'arithmétique en nombre entier (ou même plus rapidement).

string

Le type string a une signification habituelle : une séquence de caractères. Lua est un langage à huit bits, de sorte que les chaînes de caractères peuvent contenir des caractères de n'importe quelle valeur numérique, y compris des zéros intégrés. Cela signifie que vous pouvez stocker n'importe quelle donnée binaire dans une chaîne de caractères. Les strings en Lua ont des valeurs immuables. Vous ne pouvez pas modifier un caractère à l'intérieur d'une chaîne, comme c'est le cas en C. Au lieu de cela, vous créez une nouvelle chaîne avec les modifications souhaitées, comme dans l'exemple suivant :

function

Les fonctions sont des valeurs de première classe en Lua. Cela signifie que les fonctions peuvent être stockées dans des variables, transmises comme arguments à d'autres fonctions et retournées comme résultats. De telles facilités donnent une grande flexibilité au langage : un programme peut redéfinir une fonction pour ajouter une nouvelle fonctionnalité, ou simplement effacer une fonction pour créer un environnement sécurisé lors de l'exécution d'un morceau de code non fiable (tel que du code reçu via un réseau). De plus, Lua offre une bonne prise en charge de la programmation fonctionnelle, notamment des fonctions imbriquées avec une portée lexicale appropriée ; il suffit d'attendre. Enfin, les fonctions de première classe jouent un rôle essentiel dans les fonctions orientées objet de Lua.

boolean

Le type boolean possède deux valeurs, false et true (faux et vrai), qui représentent les valeurs booléennes traditionnelles. Cependant, ils ne détiennent pas le monopole des valeurs de condition : En Lua, toute valeur peut représenter une condition. Les conditionnels (tels que ceux des structures de contrôle) considèrent false et nil comme faux et tout le reste comme vrai. Attention, contrairement à d'autres langages de script, Lua considère à la fois zéro et la chaîne vide comme vrais dans les tests conditionnels.

nil

Nil est un type avec une seule valeur, nil, dont la principale propriété est d'être différente de toute autre valeur. Comme nous l'avons vu, une variable globale a une valeur nulle par défaut, avant une première affectation, et vous pouvez affecter nil à une variable globale pour la supprimer. Lua utilise nil comme une sorte de non-valeur, pour représenter l'absence d'une valeur utile.

table

Le type table met en œuvre des tableaux associatifs. Un tableau associatif est un tableau qui peut être indexé non seulement avec des nombres, mais aussi avec des chaînes de caractères ou toute autre valeur du langage, sauf nil. En outre, les tableaux n'ont pas de taille fixe ; vous pouvez ajouter autant d'éléments que vous le souhaitez à un tableau de manière dynamique. Les tableaux sont le principal (en fait, le seul) mécanisme de structuration des données en Lua, mais n'en est pas moins puissant. Nous utilisons les tableaux pour représenter des tableaux ordinaires, des tables de symboles, des ensembles, des enregistrements, des files d'attente et d'autres structures de données, d'une manière simple, uniforme et efficace. Lua utilise également des tableaux pour représenter les packages. Lorsque nous écrivons io.read, nous voulons dire "l'entrée de lecture du package io". Pour Lua, cela signifie "indexer la table io en utilisant la chaîne "read" comme clé".

iterator

Iterator permet de parcourir les éléments d'un tableau avec for k, v in ipairs().

any

Nous utilisons l'expression "n'importe quel" dans les documentations pour indiquer que n'importe quel type peut être utilisé.

varargs

Variadic list of values.

Types numériques

Outre les Types Lua, certaines méthodes de l'API ont des types numériques spécifiques, qui sont converties et traitées différemment en interne.

integer

Des nombres entiers sans chiffres après la virgule.

float

Floating-point type with decimal points.

Types spéciaux

SpecialPath

nanos world supports a special type of Path when loading Textures (.jpg, .png), Sounds (.ogg) or referencing files from WebUI. Il permet à n'importe quel Package ou WebUI d'accéder facilement aux fichiers d'autres Packages ou Packs d'Assets.

SpecialPath est une entrée de type string qui prend en charge les formats suivants pour accéder aux fichiers Assets ou Packages :

Référencer des fichiers d'Asset Packs

assets://[ASSET_PACK_PATH]/[PATH/TO/FILE.jpg]

Référencer des fichiers Packages

package://[PACKAGE_PATH]/[PATH/TO/FILE.jpg]

Exemple accéder aux images du quaternius Asset Pack:

assets://quaternius/Thumbnails/SK_Revolver_01.jpg

Exemple accéder aux sons .ogg du package sandbox :

package://sandbox/Client/my_awesome_audio.ogg

Exemple d'accès à un fichiers de police d'écriture .ttf à partir de my-fonts Paquet :

package://my-fonts/Client/Roboto.ttf

tip

L'entrée SpecialPath prend également en charge les chemins relatifs et traditionnels !