Compartir tecnología

Comenzando con lua (2) -tipos de datos

2024-07-12

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

Prefacio

Se hace referencia a este artículo desde:Tipos de datos de Lua | Tutorial para principiantes (runoob.com)

Para aquellos que quieran saber más, consulte el enlace de arriba:

ocho tipos básicos

tipo - función para ver el tipo de datos:

Programa de prueba:

  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

Demostración de efectos

Puede ver que el tipo (Y) que generamos aquí es de tipo nulo, ¿por qué? Se le demostrará el siguiente nulo (vacío).

nulo (vacío)

El tipo nulo representa un tipo que no tiene ningún valor válido. Tiene un solo valor: nulo. Por ejemplo, imprimir una variable sin asignación generará un valor nulo:

Tipo de variable no inicializada: nula

De la siguiente manera: los tipos de salida de las tres variables a las que no se les asignan valores iniciales son todos nulos.

nil elimina pares clave-valor en la tabla

Programa de prueba

  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后============")

resultado de la operación

Para las variables y tablas globales, nil también tiene un efecto de "eliminación". Asignar un valor nulo a las variables globales o variables en la tabla equivale a eliminarlas.

nil debe compararse con comillas dobles "

type(X)==nil da como resultadoFALSOLa razón es que el tipo (X) es esencialmente la cadena "nula" devuelta, que es un tipo de cadena:

booleano

El tipo booleano tiene solo dos valores opcionales: verdadero (verdadero) y falso (falso). Lua trata falso y nulo como falso, y todo lo demás es verdadero.

Programa de prueba

  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

Demostración de efectos

número


Lua tiene solo un tipo de número por defecto: tipo doble (doble precisión) (el tipo predeterminado se puede modificar en luaconf.h), los siguientes métodos de escritura se consideran num

cadena (cadena)

"" '' -- representa una cadena


[[ ]] - representa una cadena
 

Los números se pueden forzar a cadenas.

Al realizar operaciones aritméticas en una cadena numérica, Lua intentará convertir la cadena numérica en un número:

Utilice .. para concatenar cadenas

 

mesa

En Lua, la creación de tablas se logra mediante "expresiones constructivas". La expresión construida más simple es {}, que se utiliza para crear una tabla vacía. También puede agregar algunos datos a la tabla e inicializar la tabla directamente:

tabla de inicialización

Modificar tabla según el índice (clave)

Una mesa en Lua es en realidad una"Matriz asociativa"(matrices asociativas), el índice de la matriz puede ser un número o una cadena.

Los índices de Lua comienzan desde 1 (en lugar de)

La tabla no tendrá una longitud fija. Cuando se agreguen nuevos datos, la longitud de la tabla aumentará automáticamente. Las tablas que no estén inicializadas serán nulas.

función

En Lua, las funciones se consideran "valores de primera clase".

Las funciones se pueden almacenar en variables:

Expresión lambda (función anónima) pasando parámetros


hilo


En Lua, el hilo más importante es la corrutina. Es similar a un hilo y tiene su propia pila independiente, variables locales y puntero de instrucciones.
Las variables globales y la mayoría de las demás cosas se pueden compartir con otras corrutinas.

La diferencia entre subprocesos y corrutinas: los subprocesos se pueden ejecutar varias veces al mismo tiempo, pero las corrutinas solo pueden ejecutar una a la vez, y una corrutina en ejecución solo se suspenderá cuando esté suspendida.

datos de usuario (tipo personalizado)


userdata es un tipo de datos definidos por el usuario que se utiliza para representar un tipo creado por una aplicación o biblioteca de lenguaje C/C++.
Puede almacenar cualquier dato de cualquier tipo de datos C/C++ (normalmente estructura y puntero) en una variable Lua y llamarlo