Latest web development tutorials

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))

Instancia en ejecución »

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.