script print for create lua lua-table

print - lua script table insert



Compruebe si la matriz contiene un valor especĂ­fico (3)

Tengo esta matriz, con algunos valores (int) y quiero verificar si un valor dado por el usuario es igual a un valor en esa cadena. Si es así, envíe un mensaje como "Consiguió su cadena".

Ejemplo de la lista:

local op = { {19}, {18}, {17} } if 13 == (the values from that array) then message else other message

¿Cómo puede hacerse esto?


La op de la tabla de su pregunta es en realidad una matriz (tabla) de matrices.

Para verificar si existe un valor en una tabla:

local function contains(table, val) for i=1,#table do if table[i] == val then return true end end return false end local table = {1, 2, 3} if contains(table, 3) then print("Value found") end


También puede hacer que la comprobación de si el valor exista en su matriz sea más eficiente al mover sus valores al índice y asignarles el valor verdadero.

Luego, cuando revise su tabla, simplemente verifique si existe un valor en ese índice, lo que le ahorrará tiempo porque no necesita pasar por toda la tabla en el peor de los casos ...

Este es el ejemplo que tenía en mente:

local op = { [19]=true, [18]=true, [17]=true } if op[19] == true then print("message") else print("other message") end


Lua no tiene matrices estrictas como otros idiomas, solo tiene tablas hash. Las tablas en Lua se consideran como matrices cuando sus índices son numéricos y están empaquetados densamente, sin dejar huecos. Los índices en la siguiente tabla serían 1, 2, 3, 4 .

local t = {''a'', ''b'', ''c'', ''d''}

Cuando tiene una tabla similar a una matriz, puede verificar si contiene un cierto valor al recorrer la tabla. Puede usar un ciclo for..in , y la función ipairs para crear una función genérica.

local function has_value (tab, val) for index, value in ipairs(tab) do if value == val then return true end end return false end

Podemos usar lo anterior en una condición condicional para obtener nuestro resultado.

if has_value(arr, ''b'') then print ''Yep'' else print ''Nope'' end

Para reiterar mi comentario anterior, su código de ejemplo actual no es una tabla de números similar a una matriz. En su lugar, es una tabla similar a una matriz que contiene tablas tipo matriz, que tienen números en cada uno de sus primeros índices. Debería modificar la función anterior para que funcione con el código que se muestra, lo que lo hace menos genérico.

local function has_value (tab, val) for index, value in ipairs(tab) do -- We grab the first index of our sub-table instead if value[1] == val then return true end end return false end

Lua no es un lenguaje muy grande o complejo, y su sintaxis es muy clara. Si los conceptos anteriores son totalmente ajenos a ti, necesitarás pasar un tiempo leyendo literatura real, no solo copiando ejemplos. Aconsejaría leer Programación en Lua para asegurarte de que entiendes los conceptos básicos. Esta es la primera edición, dirigida a Lua 5.1.