Close
    Search Search

    Variable

    A variable es un valor con nombre en un script que puede contener un valor. Si intenta acceder a una variable que aún no estaba definida, obtendrá el valor nil.

    1 impresión (variable) - cero

    A diferencia de otros lenguajes, Lua no se escribe fuertemente, sino que se escribe dinámicamente. Esto le da mucha más libertad que los lenguajes fuertemente tipados, como Java, C ++ o C. ¡Puede asignar cualquier valor de cualquier tipo a cualquier variable, ya sea que esté definida o no!



    Variable

    Asignación variable

    Contenido

    Tipos de datos

    Los tipos de datos son exactamente lo que dice el nombre, ¡tipos de datos! En Roblox, tenemos acceso a múltiples tipos de datos:

    Tipo Descripción
    Boolean Representa verdadero o falso
    Función Una función a la que puedes llamar
    Nada Nada, nulo
    Número Utilizado para almacenar números
    Cordón Se utiliza para almacenar textos, una cadena de caracteres Ej: "omg"
    Mesa Un grupo de elementos
    Hilo Una corrutina
    Datos del usuario Valores no hechos en Lua

    Ámbito de aplicación

    Variables normales

    Se puede acceder a las variables normales desde cualquier parte de un script (no puede usar una variable antes de asignarle un valor, entonces devuelve nil), pero no se puede compartir entre scripts. Las variables normales nunca deben usarse porque son más lentas que las variables locales y no ofrecen ninguna ventaja sobre las variables locales. [1]



    1 - Un ejemplo de una variable normal 2 3 pi = math.pi 4 5 print (pi) - 3.1415926535898

    Variables locales

    Las variables locales tienen un alcance y solo se pueden usar desde dentro de su alcance o como valores superiores. Solo puede tener 200 variables locales a la vez (porque Lua tiene un máximo de 200 registros), pero es casi imposible llegar a esto si está codificando de manera normal.

    Las variables locales se pueden diferenciar de las globales debido a que la palabra local se coloca antes de sus nombres definidos.

    1: un ejemplo de una variable local 2 3 local pi = math.pi 4 5 print (pi) --3.1415926535898


    Las variables normales se pueden usar entre ámbitos, mientras que las variables locales solo existen dentro del ámbito. Un alcance es, por ejemplo, un bucle o una función.

    1 Foo = "bar" - Hace una variable global 2 función DoStuff () 3 local Foo = "not bar" 4 print (Foo) 5 end 6 function DoOtherStuff () 7 Foo = "this is bar" 8 end 9 DoStuff ( ) - no barra 10 imprimir (Foo) - barra 11 DoOtherStuff () 12 imprimir (Foo) - esto es barra

    Variables globales

    Se pueden utilizar variables globales entre scripts. En otras palabras, ¿puede eliminar una variable en un script y obtener su valor en otro script? Para poder hacer variables globales tienes que acceder a la tabla global. _G Si desea hacer una variable global, simplemente agregue ese valor a la tabla global:


    1 _G ["MyVariable"] = "Este es el valor"

    Y luego puedes hacer esto en otro script:


    1 impresión (_G.MyVariable): este es el valor

    Debe asegurarse de que el primer script se ejecute primero, aunque puede hacerlo agregando un "esperar ()" en la línea superior del segundo script. También puede realizar funciones globales.

    1 _G ["MyFunction"] = function () print ("Esta es la función") end

    Y en otro guión:

    1 _G.MyFunction ()

    Más información sobre cómo usa las tablas:

    Campos de tabla

    Los campos de la tabla, aunque se comportan de manera diferente a las variables normales y las variables locales, siguen siendo variables. [2]

    Usando tablas

    Mesas

    Las tablas son grupos de campos a los que se puede acceder mediante la tabla. Para construir una tabla, comience la tarea como normalmente ...

    1 local a =

    Y luego use llaves para mostrar que es una tabla:

    1 local a = {}

    Para agregar elementos a la tabla directamente en el constructor de tablas, enumerelos en orden, así:

    1 local a = {1,2,3}

    Para acceder a un elemento en una tabla, usamos algo llamado índice, que es como un nombre de archivo en una computadora.

    Para encontrar la variable en un índice determinado, use los operadores de índice, [] y el nombre de la tabla, así:


    1 tableName local = {1,2,3} 2 3 print (tableName [índice])

    Ahora, ese código no funcionaría porque no puede indexar una tabla con nil, sin embargo, puede indexarlo con todo lo demás, como este ejemplo:

    1 tableName local = {} 2 3 tableName [Workspace] = "Workspace" 4 5 tableName [game] = "game" 6 7 print (tableName [Workspace])

    Con este método, puede obtener clientes de chat de jugadores, herramientas, ¡cualquier cosa!



    Para y tablas

    Para iterar a través de una tabla, puede usar el ciclo for:

    1 local a = {1,2,3,4,5,6,7,8,9,10} 2 para i = 1, 10 do 3 print (a [i]) 4 end

    Alguna salida:

    1

    2

    3

    4

    Sin embargo, a veces, no sabes qué tan grande es una tabla, un método es recorrer la tabla hasta que alcances un valor nulo:

    1 local a = {2,3,4,2,4,3,4,2,3,43,2,4,3,4,2,3,4,2,3} 2 para i = 1, matemáticas .enorme hacer 3 si a [i] == nil luego romper el final 4 imprimir (a [i]) 5 final

    Sin embargo, este método es muy ineficiente y podría romperse demasiado pronto, o no romperse en absoluto, como en esta tabla:

    1 local a = {1,2,3,4,2,5, nil, 3,4,2,5} 2 for i = 1, math.huge do 3 if a [i] == nil then break end 4 imprimir (a [i]) 5 final

    Para evitar esto, usamos el operador de longitud, #

    1 local a = {2,3,4,2,5, nil, 3,4,2,34,2} 2 para i = 1, #a do 3 print (a [i]) 4 end

    Esto omite la verificación manual que teníamos que hacer antes y nos dice la longitud de la mesa. Esto podría usarse para seleccionar jugadores aleatorios, así:

    1 local PlayerList = game.Players: GetChildren () 2 local RandomPlayer = PlayerList [math.random (1, # PlayerList)]

    También puede utilizar el operador de longitud para obtener el número de piezas en el nivel superior del espacio de trabajo:

    1 impresión (#Workspace: GetChildren ())

    Como sabrá, el código anterior funciona porque obtenemos la longitud de la tabla devuelta, no el espacio de trabajo. Tenga en cuenta que el operador de longitud no funciona directamente en datos de usuario [objetos roblox, instancias].

    Variables de función

    Las funciones son las tablas de código, o en otras palabras, grupos de código. Las funciones son los bloques de construcción, y los organizadores del código proporcionan una forma de reutilizar el código una y otra vez sin tener que escribirlo todo. Las funciones también se utilizan para obtener niños de forma recursiva, establecer propiedades, calcular cosas y otras cosas divertidas. cosas. A continuación, se muestra un ejemplo de una función:

    1 función a () 2 3 fin

    Dado que las funciones pueden calcular cosas, ¿por qué no hacemos una función que genere un valor?

    1 local b = 0 2 función a () 3 b = b + 1 4 final 5 imprimir (b) 6 a () 7 imprimir (b)

    Hmm ... Esta función podría ser mejor, ¡usemos la palabra clave return!

    1 local b = 0 2 función a () 3 b = b + 1 4 return b 5 end 6 print (a (), a (), a (), a ())

    La razón por la que agregamos primero a nuestra variable b es que una vez que regresa de una función, su función deja de funcionar.

    1 función a () 2 si es verdadera, devuelve end 3 print ("Esto nunca se ejecutará") 4 end 5 a ()

    En el código anterior, la función a regresa antes de llegar a la llamada a la función imprimir. Esto significa que no verá la impresión a menos que elimine la devolución.

    Otra cosa que debe saber sobre la palabra clave de retorno es que solo puede colocarla antes de una palabra clave final. Solo se permite colocar una devolución en medio de su código si coloca la devolución dentro de una declaración [algo que usa un final].

    1 función a () 2 do return end 3 print ("No verá esto. El retorno está dentro de una instrucción do") 4 end 5 a () 6 7 --- Y un ejemplo roto 8 función a () 9 return 10 print ("Este código será un error") 11 end 12 a ()

    Como puede ver, el segundo ejemplo no funciona porque tenemos un retorno en el medio. Esto no solo dificulta la lectura del código, sino que también provoca un error.

    Referencias

    1. ↑ Consejos de rendimiento de Roberto Ierusalimschy Lua
    2. ↑ R. Ierusalimschy, LH de Figueiredo, W. Celes; Lua 5.1 Reference Manual, Lua.org, agosto de 2006; ISBN 85-903798-3-3
    Añade un comentario de Variable
    ¡Comentario enviado con éxito! Lo revisaremos en las próximas horas.