tipos de datos de Lua
Lua es un lenguaje de tipado dinámico, variables, definiciones de tipos no necesitan solamente asignan valores a las variables. Los valores pueden ser almacenados en las variables, pasa como un parámetro o devuelven los resultados.
Lua tiene ocho tipos básicos son: cero, booleano, número, cadena, los datos de usuario, la función, el hilo y mesa.
Tipos de datos | descripción |
---|---|
nulo | El más simple, sólo el valor nulo pertenece a esta clase representa un valor no válido (equivalente a falso en las expresiones condicionales). |
booleano | Contiene dos valores: falso y verdadero. |
número | Representa el tipo de doble precisión de punto flotante de bienes |
cadena | Cadena por un par de comillas simples o dobles para representar |
función | O por la función C escrito en Lua |
datosvarios | C representa cualquier estructura de datos almacenada en una variable |
hilo | Que la aplicación de una línea separada para la ejecución de programas de cooperación |
mesa | tablas Lua (tabla) es en realidad una "matriz asociativa" (arrays asociativos), el índice de la matriz puede ser un número o una cadena. En Lua, la tabla es creada por la "construcción de expresión" para completar la construcción de expresión más simple {} se utiliza para crear una tabla vacía. |
Podemos utilizar la función de tipo para probar el tipo de una variable o valor dado:
print(type("Hello world")) --> string print(type(10.4*3)) --> number print(type(print)) --> function print(type(type)) --> function print(type(true)) --> boolean print(type(nil)) --> nil print(type(type(X))) --> string
nil (vacío)
nil no tiene ningún tipo indica un valor válido, es sólo un valor - Valor nulo, tales como la impresión de una asignación variable no lo hace, se dará salida a un valor nulo:
> print(type(a)) nil >
Para las variables globales y mesa, nula y una acción de "eliminar", en la mesa o tabla de variables variable global asignado un valor nulo, equivalente a eliminarlos, ejecute el siguiente código a saber:
tab1 = { key1 = "val1", key2 = "val2", "val3" } for k, v in pairs(tab1) do print(k .. " - " .. v) end tab1.key1 = nil for k, v in pairs(tab1) do print(k .. " - " .. v) end
boolean (booleano)
tipo booleano tiene sólo dos valores posibles: true (verdadero) y false (falso), Lua es false y nil como "falsa", la otra "verdad":
print(type(true)) print(type(false)) print(type(nil)) if false or nil then print("至少有一个是 true") else print("false 和 nil 都为 false!") end
El código de seguridad se ejecuta como sigue:
$ lua test.lua boolean boolean nil false 和 nil 都为 false!
número (Digital)
predeterminado Lua es solamente un tipo de número - doble (doble precisión) Tipo (el tipo predeterminado se puede modificar en la definición luaconf.h), el texto siguiente se ve que es el tipo de número:
print(type(2)) print(type(2.2)) print(type(0.2)) print(type(2e+1)) print(type(0.2e-1)) print(type(7.8263692594256e-06))
Los resultados del código de seguridad:
number number number number number number
string (cadena)
Cadena por un par de comillas simples o dobles para representar.
string1 = "this is string1" string2 = 'this is string2'
También puede utilizar dos soportes "[[]]" significa "uno" cadena.
html = [[ <html> <head></head> <body> <a href="http://www.w3cschool.cc/">w3cschool本教程</a> </body> </html> ]] print(html)
Los siguientes resultados de la ejecución de código:
<html> <head></head> <body> <a href="http://www.w3cschool.cc/">w3cschool本教程</a> </body> </html>
Cuando una cadena numérica para realizar operaciones aritméticas, Lua tratará de convertir ese número en una cadena de números:
> print("2" + 6) 8.0 > print("2" + "6") 8.0 > print("2 + 6") 2 + 6 > print("-2e2" * "6") -1200.0 > print("error" + 1) stdin:1: attempt to perform arithmetic on a string value stack traceback: stdin:1: in main chunk [C]: in ? >
El código anterior "error" + 1 error de ejecución, el encadenamiento de la secuencia utilizando .., tales como:
> print("a" .. 'b') ab > print(157 .. 428) 157428 >
Utilice # para calcular la longitud de la cadena, la cadena en el frente, los siguientes ejemplos:
> len = "www.w3cschool.cc" > print(#len) 16 > print(#"www.w3cschool.cc") 16 >
tabla (tabla)
En Lua, la tabla es creada por la "construcción de expresión" para completar la construcción de expresión más simple {} se utiliza para crear una tabla vacía. También se pueden añadir algunos datos de la tabla, tabla de inicialización directa:
-- 创建一个空的 table local tbl1 = {} -- 直接初始表 local tbl2 = {"apple", "pear", "orange", "grape"}
tablas Lua (tabla) es en realidad una "matriz asociativa" (arrays asociativos), el índice de la matriz puede ser un número o una cadena.
-- table_test.lua 脚本文件 a = {} a["key"] = "value" key = 10 a[key] = 22 a[key] = a[key] + 11 for k, v in pairs(a) do print(k .. " : " .. v) end
Scripts resultados de la ejecución:
$ lua table_test.lua key : value 10 : 33
A diferencia de otros idiomas de la matriz como una matriz de índice inicial 0, el índice inicial predeterminada en la tabla general en Lua 1.
-- table_test2.lua 脚本文件 local tbl = {"apple", "pear", "orange", "grape"} for key, val in pairs(tbl) do print("Key", key) end
Scripts resultados de la ejecución:
$ lua table_test2.lua Key 1 Key 2 Key 3 Key 4
tamaño de la tabla no es fijo longitud, hay un aumento automático de la longitud de la tabla para añadir nuevos datos, la tabla original no es nula.
-- table_test3.lua 脚本文件 a3 = {} for i = 1, 10 do a3[i] = i end a3["key"] = "val" print(a3["key"]) print(a3["none"])
Scripts resultados de la ejecución:
$ lua table_test3.lua val nil
función (Function)
En Lua, la función se considera "valores de primera clase (First-Class Value)", es posible que la función de la variable:
-- function_test.lua 脚本文件 function factorial1(n) if n == 0 then return 1 else return n * factorial1(n - 1) end end print(factorial1(5)) factorial2 = factorial1 print(factorial2(5))
Scripts resultados de la ejecución:
$ lua function_test.lua 120 120
función puede ser función anónima (función anónima) a través de la transmisión de parámetros:
-- function_test2.lua 脚本文件 function anonymous(tab, fun) for k, v in pairs(tab) do print(fun(k, v)) end end tab = { key1 = "val1", key2 = "val2" } anonymous(tab, function(key, val) return key .. " = " .. val end)
Scripts resultados de la ejecución:
$ lua function_test2.lua key1 = val1 key2 = val2
rosca (rosca)
En Lua, el hilo conductor es un programa de colaboración (co-rutina). Es con rosca (rosca) casi tiene su propia pila independiente, variables locales y puntero de instrucción, puede compartir variables globales y la mayor parte de las otras cosas con otros programas de colaboración.
diferencia de rosca con corrutinas: múltiples hilos se pueden ejecutar simultáneamente, y la co-rutina sólo se puede ejecutar de una en cualquier momento, y co-rutina se ejecuta solamente colgar (suspender) solamente en las pausas.
los datos de usuario (tipo personalizado)
datos de usuario es un tipo de datos definido por el usuario que utiliza la aplicación indica una biblioteca o C / C ++ lenguaje creado puede ser cualquier / datos C de C ++ de cualquier tipo de datos (por lo general una estructura y punteros) almacenado en Lua variable de llamada.