Partage de technologie

Premiers pas avec Lua (2) - types de données

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Préface

Cet article est référencé à partir de :Types de données Lua | Tutoriel novice (runoob.com)

Pour ceux qui veulent en savoir plus, veuillez consulter le lien ci-dessus :

huit types de base

type - fonction pour afficher le type de données :

programme d'essais :

  1. print(type("Hello world")) --> string
  2. print(type(10.4*3)) --> number
  3. print(type(print)) --> function
  4. print(type(type)) --> function
  5. print(type(true)) --> boolean
  6. print(type(nil)) --> nil
  7. print(type(type(X))) --> string
  8. print(type(Y)) -->nil
  9. print(type('Y')) -->string

Démonstration d'effet

Vous pouvez voir que le type(Y) que nous produisons ici est un type nul, pourquoi ? Le prochain zéro (vide) vous sera démontré.

nul (vide)

Le type nil représente un type qui n'a aucune valeur valide. Il n'a qu'une seule valeur - nil. Par exemple, l'impression d'une variable sans affectation produira une valeur nulle :

Type de variable non initialisé - nul

Comme suit : Les types de sortie des trois variables auxquelles aucune valeur initiale n'est affectée sont tous nuls.

nil supprime les paires clé-valeur dans le tableau

programme d'essai

  1. tab1 = { key1 = "val1", key2 = "val2",
  2. "val3","val4",key3 = "val5" }
  3. for k, v in pairs(tab1) do
  4. print(k .. " - " .. v)
  5. end
  6. print("=========直接输出=============")
  7. tab1.key1 = nil
  8. for k, v in pairs(tab1) do
  9. print(k .. " - " .. v)
  10. end
  11. print("============删除key1后==========")
  12. tab1.key3 = nil
  13. for k,v in pairs(tab1) do
  14. print(k.. " - "..v)
  15. end
  16. print("=========删除key3后============")

résultat de l'opération

Pour les variables globales et les tableaux, nil a également un effet de « suppression ». Attribuer une valeur nulle aux variables globales ou aux variables du tableau équivaut à les supprimer.

nul doit être comparé à des guillemets doubles "

type(X)==nil donneFAUXLa raison en est que type(X) est essentiellement la chaîne "nil" renvoyée, qui est un type de chaîne :

booléen

Le type booléen n'a que deux valeurs facultatives : true (true) et false (false). Lua traite false et nil comme false, et tout le reste est également vrai :

programme d'essai

  1. print(type(true))
  2. print(type(false))
  3. print(type(nil))
  4. if false or nil then
  5. print("至少有一个是 true")
  6. else
  7. print("false 和 nil 都为 false")
  8. end
  9. if 0 then
  10. print("数字 0 是 true")
  11. else
  12. print("数字 0 为 false")
  13. end

Démonstration d'effet

nombre


Lua n'a qu'un seul type numérique par défaut - type double (double précision) (le type par défaut peut être modifié dans luaconf.h), les méthodes d'écriture suivantes sont considérées comme num

chaîne(chaîne)

"" '' -- représente une chaîne


[[ ]] -- représente une chaîne
 

Les nombres peuvent être forcés en chaînes

Lors de l'exécution d'opérations arithmétiques sur une chaîne numérique, Lua essaiera de convertir la chaîne numérique en nombre :

Utilisez .. pour concaténer des chaînes

 

tableau

Dans Lua, la création de table s'effectue via des « expressions constructives ». L'expression construite la plus simple est {}, qui est utilisée pour créer une table vide. Vous pouvez également ajouter des données à la table et initialiser la table directement :

table d'initialisation

Modifier la table en fonction de l'index (clé)

Une table en Lua est en fait un"Tableau associatif"(tableaux associatifs), l'index du tableau peut être un nombre ou une chaîne.

Les index de Lua commencent à 1 (au lieu de)

Le tableau n'aura pas de longueur fixe Lorsque de nouvelles données sont ajoutées, la longueur du tableau augmentera automatiquement. Les tableaux qui ne sont pas initialisés seront nuls.

fonction

En Lua, les fonctions sont considérées comme des « valeurs de première classe ».

Les fonctions peuvent être stockées dans des variables :

Expression Lambda (fonction anonyme) passant des paramètres


fil


En Lua, le fil conducteur le plus important est la coroutine. Il est similaire à un thread et possède sa propre pile indépendante, ses variables locales et son pointeur d'instruction.
Les variables globales et la plupart des autres éléments peuvent être partagés avec d'autres coroutines.

La différence entre les threads et les coroutines : les threads peuvent s'exécuter plusieurs fois en même temps, mais les coroutines ne peuvent en exécuter qu'une à la fois, et une coroutine en cours d'exécution ne sera suspendue que lorsqu'elle est suspendue.

données utilisateur (type personnalisé)


userdata est un type de données définies par l'utilisateur utilisé pour représenter un type créé par une application ou une bibliothèque de langage C/C++.
Vous pouvez stocker n'importe quelle donnée de n'importe quel type de données C/C++ (généralement une structure et un pointeur) dans une variable Lua et l'appeler