Programación de complementos
Autor: Mu Feng (miembro de Second Life)
Todos los derechos reservados, indique la fuente para la reimpresión
En este artículo, Me gustaría presentarles cómo diseñar programas Lua. Supongo que todo el mundo ha aprendido al menos un lenguaje de programación, como Basic o C, especialmente C. Porque el mayor uso de Lua es como script en el programa anfitrión.
La sintaxis de Lua es relativamente simple y fácil de aprender, pero sus funciones no son débiles.
En Lua, excepto las palabras clave, todo es una variable. Por favor recuerda esta frase.
1. Primero, comentarios.
Al escribir un programa, siempre hay comentarios.
En Lua, puedes utilizar comentarios de una sola línea y comentarios de varias líneas.
En un comentario de una sola línea, dos signos menos "-" consecutivos indican el comienzo del comentario y continúan hasta el final de la línea. Equivalente a "//" en lenguaje C.
En un comentario de varias líneas, "-[[" significa que el comentario comienza y continúa hasta "]]". Este comentario es equivalente a "/*...*/" en lenguaje C. En los comentarios, se pueden anidar "[[" y "]]".
Dos. Programación Lua
El clásico programa "Hola mundo" siempre se utiliza para introducir un lenguaje. En Lua, es fácil escribir un programa como este:
Print("Hello world")
En Lua, puedes usar punto y coma ";" entre declaraciones. Separa, también puedes usar espacios para separar. En términos generales, si se escriben varias declaraciones en la misma línea, se recomienda separarlas siempre con punto y coma.
Lua tiene varias sentencias de control de programa, tales como:
Control condicional: si condición entonces... elseif condición entonces... más... fin
Bucle while: condición while hacer...fin
Repetir bucle: repetir... hasta la condición
Bucle For: para variable = valor inicial, valor final, paso hacer... . fin.
Bucle For: Para la variable 1, variable 2,..., la variable n en la tabla o función de enumeración hace... terminar.
Tenga en cuenta que la variable de bucle de for siempre solo actúa sobre la variable local de for y el valor del paso también se puede omitir. En este caso, el bucle for utilizará 1 como valor de paso.
Puedes utilizar break para detener un bucle.
Si tienes conocimientos básicos de programación, como Basic y C, descubrirás que Lua no es difícil. Sin embargo, Lua es significativamente diferente de estos lenguajes de programación en varios aspectos, así que preste especial atención.
. Bloque de instrucciones
Un bloque de instrucciones está encerrado entre "{" y "}" en C y termina en Lua. Por ejemplo:
Print("Hello")End
Puede especificar variables locales en funciones y bloques de instrucciones.
. Declaraciones de tareas
Las declaraciones de tareas se han mejorado en Lua. Puede asignar valores a múltiples variables al mismo tiempo.
Por ejemplo:
a, b, c, d=1, 2, 3, 4
Par:
a, b = b,a - Qué función tan conveniente para intercambiar variables.
Por defecto, las variables siempre se consideran globales. Si desea definir una variable local, debe utilizar una descripción local al asignarla por primera vez. Por ejemplo:
Local A, B, C = 1, 2, 3-A, B, C son todas variables locales.
. Operaciones numéricas
Igual que el lenguaje C, admite , -, *, /. Pero Lua tiene un " " más. Esto significa exponenciación exponencial. Por ejemplo, el resultado de 2^3 es 8 y el resultado de 2^4 es 16.
Para concatenar dos cadenas, puede utilizar el operador ".." Por ejemplo:
"Este".."Cadena." - igual a "Esta cadena"
.
Operaciones de comparación
lt gt lt= gt= == ~=
Representan respectivamente menor, mayor que, no mayor que, no menor que, igual y no igual a.
Todos estos operadores siempre devuelven verdadero o falso.
Para datos de tipo tabla, función y datos de usuario, solo se pueden utilizar dos tipos == y ~ =. La igualdad significa que ambas variables se refieren a los mismos datos. Por ejemplo:
a={1, 2}
b=a
print(a==b, a~=b) - verdadero, falso
a={1, 2}
b={1, 2}
imprimir(a==b, a~=b) - falso, verdadero
. Operaciones lógicas
Y, o, no
Entre ellas, and y or son muy diferentes al lenguaje C.
Recuerde aquí que en Lua, solo falso y nulo se evalúan como falso, todos los demás datos se evalúan como verdaderos y 0 también es verdadero.
Los resultados de la operación de and y or no son verdaderos ni falsos, sino que están relacionados con sus dos operandos.
a y b: si a es falso, devuelve a; en caso contrario, devuelve b.
a o b: si a es verdadero, devuelve a; en caso contrario, devuelve b.
Algunos ejemplos:
Imprimir (4 y 5) -> Cinco
imprimir (nulo y 13) ->Ninguno
imprimir(falso y 13)->incorrecto
imprimir(4 o 5)->cuatro
imprimir(falso o 5)->cinco
Esto es una característica muy útil pero confusa en Lua.
Podemos imitar la afirmación en lenguaje C: x = a? B: c, en Lua, se puede escribir como: x = a y b o c.
La afirmación más útil es: x = x o v, que equivale a: si no x entonces x = v termina. La prioridad de
. Los operadores, de mayor a menor, son los siguientes:
^
No (operación unaria)
* /
-
..(Concatenación de cadenas)
lt gt lt= gt= ~= ==
y
o
Tres. Palabras clave
Las palabras clave no se pueden utilizar como variables. No hay muchas palabras clave en Lua, solo las siguientes:
Romper otro yo
Función si termina en falso
En local nil not o
Repetir retorno y luego verdadero hasta el momento
Cuatro. Tipo de variable
¿Cómo determinar el tipo de una variable? Esto se puede comprobar utilizando la función type(). Lua admite los siguientes tipos:
Valor nulo, todas las variables no utilizadas son cero. Nil es tanto un valor como un tipo.
Valor booleano
Valor numérico En Lua, el valor numérico equivale al doble en lenguaje C.
Cadena Una cadena que puede contener caracteres "" si se desea.
Tipo de tabla de relaciones de tabla, este tipo es relativamente poderoso, hablaremos de ello más adelante.
Función tipo función, no lo dudes, la función también es un tipo, es decir, todas las funciones son en sí mismas variables.
Datos de usuario Bueno, este tipo se utiliza especialmente para tratar con hosts Lua. Los hosts suelen estar escritos en C y C++. En este caso, los datos de usuario pueden ser cualquier tipo de datos del host. Los más utilizados son Struct y pointer.
Tipo de hilo, no hay un hilo real en Lua. Lua puede dividir una función en varias partes para ejecutarla. Si está interesado, puede consultar la documentación de Lua.
Definición de variables
Todos los lenguajes utilizan variables.
En Lua, no importa dónde use variables, no es necesario declararlas. Todas estas variables son siempre variables globales, a menos que agregue "local" al frente.
Presta especial atención a este punto, porque es posible que quieras utilizar variables locales en una función pero te olvides de explicarlas localmente.
En cuanto a los nombres de las variables, distinguen entre mayúsculas y minúsculas. En otras palabras, A y A son dos variables diferentes.
La forma de definir una variable es asignarle un valor. La operación "=" se utiliza para la asignación.
Definamos juntos varios tipos de variables comunes.
A. Ninguno
Como se mencionó anteriormente, el valor de las variables no utilizadas es cero. A veces también necesitamos borrar una variable. En este momento podemos asignar directamente un valor nulo a la variable. Por ejemplo:
var 1 = nil: tenga en cuenta que nil debe estar en minúsculas.
B. Sistema de álgebra booleana
Al realizar juicios condicionales, se suelen utilizar valores booleanos. Hay dos tipos de valores booleanos: verdadero y falso. En Lua, solo falso y nulo se evalúan como falso, todos los demás tipos de valores se evalúan como verdaderos. Como 0, cadena vacía, etc. , son todas ciertas. No se deje engañar por los hábitos del lenguaje C, 0 es real en Lua. También puedes asignar valores booleanos directamente a las variables, por ejemplo:
varboolean = true
Números
En Lua, no hay ningún tipo de entero. , ni necesidad. En términos generales, siempre que el valor no sea muy grande (por ejemplo, no más de 100.000.000.000.000.000.000), no habrá error de redondeo. En muchas CPU, las operaciones con números reales no son más lentas que con números enteros.
La representación de números reales es similar al lenguaje C, por ejemplo:
4 0.4 4.57e-3 0.3e12 5e 20
Recta
D. p>
La cadena es siempre un tipo de alto nivel muy común. En Lua, se pueden definir fácilmente cadenas muy largas.
Hay varias formas de expresar una cadena en Lua. El método más común es encerrar una cadena entre comillas dobles o simples, por ejemplo:
"Esto es una cadena".
Al igual que el lenguaje C, admite algunas conversiones de caracteres. , como se muestra a continuación:
Una campana
Abducir
Alimentación en forma de F
Nueva línea
Entrar
Pestaña horizontal
Pestaña vertical
\Backslash
"Comillas dobles
Comillas simples
[Corchete izquierdo
]Corchete derecho
Debido a que este tipo de cadena solo se puede escribir en una línea, es inevitable usar un carácter de escape Agrega una cadena. de caracteres de escape, que se ven muy bien, como por ejemplo:
"Una línea
Siguiente línea
" entre comillas "," entre comillas"
La gran cantidad de símbolos "" hace que la gente se sienta enferma al mirarlos. Si siente lo mismo que yo, entonces en Lua podemos usar otra expresión: use "[" y "]]" para encerrar cadenas de varias líneas, como:
page = [ [ p>
ltHTML gt
ltHEAD gt
ltTITLE gtUna página HTMLlt/TITLE gt;
lt/HEAD gt;
p>
ltBODY gt
ltA HREF="http://www.lua.org
Esta página no pertenece al sitio web de NGA y NGA no garantiza su seguridad.
p>Continuar accediendo y cancelar.
No volver a preguntarme [http://www.lua.org]" > Lua lt;/A gt;
[[Texto entre corchetes]]
lt/ BODY gt;
lt/HTML gt;
]]
Cabe señalar que en este tipo de cadena, si hay un solo "[" o " ]]", aún necesita usar "[" o "]" para evitar ambigüedades. Por supuesto, este rara vez es el caso.
Tabla
Tabla relacional. tipo, este es un tipo muy poderoso. Podemos pensar en este tipo como una matriz. En C, las matrices solo se pueden indexar con números enteros positivos; en Lua, las matrices se pueden indexar con cualquier tipo, excepto nil. En Lua, el contenido de la matriz solo puede tener un tipo; en Lua, se puede usar cualquier tipo de valor como contenido de la matriz, excepto nil.
La definición de Tabla es muy simple. , y su característica principal es utilizar " {" y "}" para encerrar una serie de elementos de datos. Por ejemplo:
T1 = {} - define una tabla vacía
t. 1[1] = 10 - entonces podemos usarlo como lenguaje C
T1["John"]={Age=27, Gender="Male"}
Esta oración es equivalente a:
t 1["John"]= { } - Primero debe definirse como una tabla. Recuerde, las variables no definidas son de tipo nulo. "] ["Edad"]=27
T1["John"]["Gender"]= "Male"
Cuando el índice de la tabla es una cadena, podemos Abreviatura:
John={}
John. Edad=27.
>O
John {Edad=. 27, Gender="Male"}
Esta es una característica muy poderosa
Al definir una tabla, podemos escribir todos los datos juntos entre "{" y "}". , que es muy conveniente y hermoso. Por ejemplo, la definición anterior de T1 se puede escribir de la siguiente manera:
T1=
{10, -. equivalente a [1] = 10.
[100] = 40,
John = - si lo deseas, también puedes escribir: ["John"] =
{
Edad = 27 - o, si lo prefieres: ["edad"] = 27. >
Género=masculino - si lo prefieres, también puedes escribir: ["género" ]=hombre
},
20 - equivalente a [2] = 20.
}
Se ve hermoso, ¿no? ¿No es así? Cuando escribimos, debemos prestar atención a tres puntos:
Primero, todos los elementos siempre están separados por comas ",";
Segundo, todos los valores de los indicadores deben estar separados por comas "," "[" y "]" están encerrados; si es una cadena, también puedes eliminar las comillas y los corchetes;
En tercer lugar, si no escribes un índice, el índice se considerará un número, comenzando desde 1 en orden Compilación automática;
Los tipos de tablas son tan convenientes de construir que a menudo se usan en lugar de archivos de configuración. Sí, no hay duda de que es más bonito y potente que el archivo ini.
F. Función
Función, en Lua, la definición de función también es muy simple. Una definición típica es la siguiente:
Función Agregar (a, b): Agregar es el nombre de la función, A y B son nombres de parámetros.
Return a b - return se utiliza para devolver el resultado de ejecución de la función.
Fin
Tenga en cuenta que el idioma de devolución debe escribirse antes del final. Si debe poner una oración de retorno en el medio, escriba: devolver fin.
Recuerda que las funciones también son tipos de variables. La definición de función anterior es en realidad equivalente a:
add = function(a,b) devuelve un final b
Cuando reasigna el valor a agregar, ya no representa esta función. Incluso puede asignar cualquier dato para agregar, incluido nil (de esta manera, borra la variable agregar). ¿Es la función como un puntero de función en lenguaje C?
Al igual que el lenguaje C, las funciones de Lua pueden aceptar parámetros variables y también se definen con "...", como por ejemplo:
Función y (a, b,...)
Si desea obtener los parámetros representados por..., puede acceder a la variable local arg (tipo tabla) en la función para obtenerlo.
Por ejemplo, suma(1, 2, 3, 4)
Entonces, en la función, a = 1, b = 2, arg = {3, 4}.
Lo que es más valioso es que puede devolver múltiples resultados al mismo tiempo, por ejemplo:
Función s()
Devuelve 1, 2, 3, 4
Fin
a, B, C, D = S()——En este momento, a = 1, b = 2, c = 3, d = 4.
Como se mencionó anteriormente, los tipos de tablas pueden tener valores de cualquier tipo, ¡incluidas funciones! Por lo tanto, una característica muy poderosa es que hay tablas con funciones, oh, creo que es más apropiado decir objetos. Lua puede utilizar programación orientada a objetos. ¿No lo crees? Entonces te daré el siguiente ejemplo:
t =
{
Edad = 27 años
add = function (self , n ) yo. edad = yo. Edad n fin
}
Impresos (t.Edad) - 27
t.add(t, 10)
Impresos Matter (t.Age) - 37
Pero t.add(t, 10) es un poco aburrido, ¿verdad? Está bien, en Lua puedes abreviarlo a: t:add(10) - equivalente a t.add(t, 10).
G. Datos e hilos del usuario
Estos dos tipos de temas están más allá del contenido de este artículo y no se discutirán en detalle.
Conclusión
¿Se acabó? Por supuesto que no. A continuación, debe utilizar el intérprete de Lua para ayudarle a comprender y practicar. Este artículo es sólo para ayudarle a tener una comprensión general de la sintaxis de Lua. Si tienes una base en programación, creo que te acostumbrarás rápidamente a Lua.
Al igual que el lenguaje C, Lua proporciona bastantes funciones estándar para mejorar la funcionalidad del lenguaje. Con estas funciones estándar, puede operar fácilmente con varios tipos de datos y procesar entradas y salidas. Para obtener información en esta área, puede consultar el libro "Programación en Lua" en http://www.lua.org/pil/index.html. Puede leer la versión electrónica directamente en línea
Este. La página no está disponible. Es un sitio web de NGA y NGA no garantiza su seguridad.
Continuar accediendo y cancelar. No me lo vuelvas a recordar [http://www.lua.org/pil/index.html]
Por supuesto, la característica más poderosa de Lua es su estrecha cooperación con el programa anfitrión. Por lo tanto, en el próximo artículo, le diré cómo usar el lenguaje Lua como script en su programa para que su programa interactúe con los scripts Lua.
BBS.NGACN.COM
[Yao Yao]
Zhu Xiaoxiao 2005-06-29 14:11
Nivel: Veterano
Publicaciones: 721
Reputación: 13
Riqueza: 13
Proceso de uso
1. uso de
El siguiente programa demuestra cómo usar funciones y variables locales en Lua.
Ejemplo e02.lua
-Función
Función pitagórica (a, b)
Local c2 = a^ 2 b^2
Regresar sqrt(c2)
Fin
imprimir(Pythagoras(3,4))
Resultados de ejecución
Cinco
Descripción del programa
El formato de definición de funciones en Lua es:
Nombre de función (parámetro)
p>. ..
Fin
A diferencia de Pascal, no es necesario emparejar fin con comienzo, simplemente escriba fin al final de la función.
El propósito de este ejemplo es encontrar la longitud de la hipotenusa conociendo los lados derechos del triángulo rectángulo. Los parámetros A y B representan la longitud del lado del ángulo recto respectivamente.
En la función se define una variable local para almacenar el cuadrado de la hipotenusa. Al igual que el lenguaje C, se define en una función.
El código no se ejecutará directamente, sólo cuando se llame al programa principal.
Local significa definir una variable local. Si no se agrega local, solo significa que c2 es una variable global y tiene un alcance local.
Se encuentra entre el final del nivel más interno y sus palabras clave emparejadas, como if...end, y...end, etc. Variables globales
El alcance es todo el programa.
2. Declaración de bucle
Ejemplo e03.lua
-Loop
Porque i=1, 5 do
Imprimir("Ahora soy"..I)
Fin
Resultado de ejecución
Ahora soy 1
Estoy ahora tengo 2 años
Ahora tengo 3 años
Ahora tengo 4 años
Ahora tengo 5 años
Descripción del programa
p>Aquí usamos la declaración for.
Para variable = parámetro 1, parámetro 2, parámetro 3 hazlo.
Cuerpo del bucle
Fin
En el paso del parámetro 3, la variable cambiará del parámetro 1 al parámetro 2.
Por ejemplo:
Para i=1, f(x) imprime (I) y termina
Para i=10, 1, -1, imprime (I) Fin
Aquí para imprimir ("Ahora soy" ..i), usamos .., para concatenar dos cadenas.
Accidentalmente me gustaron las cosas mencionadas en (1) No sé si te equivocaste.
Aunque aquí I es un número entero, Lua lo convertirá automáticamente en una cadena durante el procesamiento, por lo que no tenemos que preocuparnos.
3. Declaración de transferencia condicional
Ejemplo e04.lua
-Bucle y condición
Porque i=1, 5 do
p> p>
print("Ahora soy"..i)
si soy lt2 entonces
print("small")
elseif i lt Luego 4
Imprimir ("Mediano")
Otro
Imprimir ("Grande")
Fin
Fin
Resultados de la ejecución
Ya tengo 1
Pequeño
Ya tengo 2 años
Medio
Ahora tengo 3 años
Medio
Ahora tengo 4 años
Mayor
Yo ahora tengo 5 años
Mayor
Descripción del programa
If else es simple de usar, similar al lenguaje C, pero lo que se debe tener en cuenta aquí es que todo el If sólo necesita un extremo.
Incluso si se utiliza más de un elseif, sigue siendo el propósito.
Por ejemplo
Si op == " "entonces
r = a b
elseif op == "-"entonces p >
r = a - b
elseif op == "* "Entonces
r = a*b
elseif op == "/ " entonces
r = a/b
Otro
Error ("Operación no válida")
Fin
4. Pruébalo
Además del bucle for, Lua también admite una variedad de bucles. Vuelva a escribir el programa for en este artículo usando while...do y repita...hasta.
BBS.NGACN.COM
[Yao Yao]
[Segundo piso] Xiao Zhu Xiao 2005-06-29 14:20
Nivel: Veterano
Publicaciones: 721
Reputación: 13
Riqueza: 13
Uso de matrices
1. Introducción
El lenguaje Lua tiene solo una estructura de datos básica, que es una tabla, y las otras son matrices y otras estructuras de datos.
Clase, estos se pueden implementar mediante tablas.
2.2. Subíndices de tabla
Ejemplo e05.lua
-Array
Mis datos = {}
myData[0] = "foo "
myData[1] = 42
-Tabla hash
myData["bar"] = " baz " p>
-Acceso al bucle
-Estructura
Para clave, valor en myData
Imprimir(clave.."=" ..valor)
Fin
Resultado de salida
0=foo
1=42
bar= baz
Descripción del programa
Primero, defina una tabla myData={} y luego asígnele valores usando números como subíndices. Este tipo.
El método de definición es similar a una matriz en C, pero a diferencia de una matriz, no es necesario que cada elemento de la matriz sea del mismo tipo.
Al igual que en este ejemplo, uno es un número entero y el otro es una cadena.
En la segunda parte del programa, la cadena se utiliza como subíndice y se agrega un elemento a la tabla. Esta mesa es preciosa
Como el mapa. Los subíndices de tabla en STL pueden ser de cualquier tipo básico admitido por Lua, excepto valores nulos.
Lua maneja automáticamente la memoria ocupada por Table, como se muestra en el siguiente código.
a = {}
a["x"] = 10
b = a - `b ' se refiere a la misma tabla que ` a '
p>
imprimir(b[" x "])- gt; 10
b["x"] = 20
imprimir(a[ " x "])- gt;20
a = nil - ahora solo "b" todavía se refiere a la tabla
b = nil - ahora no hay ninguna referencia a la tabla
by a ambos apuntan a la misma tabla y solo ocupan una parte de la memoria. Al hacer a = nil, b todavía apunta a la mesa.
Cuando se ejecuta b=nil, Lua liberará automáticamente la memoria ocupada por la tabla porque no hay ninguna variable que apunte a la tabla.
3.3 Anidamiento. Tabla
El uso de Tabla también se puede anidar, como se muestra en el siguiente ejemplo.
Ejemplo e06.lua
-Tabla "Constructor"
Mi polígono = {
color= "azul",
Espesor=2,
npuntos = 4
{x=0, y=0},
{x=- 10, y =0},
{x=-5, y=4},
{x=0, y=4}
}
-Imprimir color
print(myPolygon["color"])
-Imprimir nuevamente usando punto
-Símbolo
Print(myPolygon.color)
-Los puntos son accesibles
-En myPolygon[1] a myPolygon[4]
- Imprime la x
coordenada del segundo punto
print(myPolygon[2]). x)
Descripción del programa
Primero, crea una tabla. La diferencia con el ejemplo anterior es que hay {x=0, y=0} en el constructor de la tabla.
¿Qué significa esto? En realidad, esta es una tabla pequeña, definida dentro de la tabla grande, y la tabla pequeña
omite el nombre de la tabla.
La última línea, myPolygon[2]. x, es el método de acceso de la tabla pequeña en la tabla grande.
BBS.NGACN.COM
[Yao Yao]
[Tercer piso] yhcs 2005-06-29 14:25
Nivel: Nivel de advertencia 2
Posición: 89
Reputación: -9
Esto debería ser de primera categoría, ¡una buena colección!
[Cuarto Piso] Zhu Xiao 2005-06-29 14:38
Nivel: Veterano
Publicaciones: 721
Reputación: 13
Riqueza: 13
Hay algunos otros materiales de escritura avanzados, pero bajo la condición de que Warcraft esté limitado a 255 palabras, se estima que no se utilizarán. Así que no lo publicaré aquí.
BBS.NGACN.COM
[Yao Yao]
Camus 2005-06-29 21:52
Nivel: Cívico
Publicaciones: 171
Reputación: 1
Riqueza: 1
Problema variable:
(1 )lua No parece necesario declarar variables, solo necesita asignar valores a las variables que desea usar. Dependiendo del tipo de asignación, la variable se escribe automáticamente. ¿Es eso así? (Por supuesto, este ejemplo se mencionará en el siguiente artículo: aunque I es un número entero aquí, Lua lo convertirá automáticamente en un tipo de cadena durante el procesamiento, por lo que no tenemos que preocuparnos. -_-)
(2)
El artículo dice: Si desea definir una variable local, debe utilizar una descripción local al asignarla por primera vez.
Entonces, cuando escribo macros, a menudo asigno valores directamente, como mp = unitmana(" player ")/unitmanamax(" player "), ¿entonces este MP se convierte en una variable global?
Problemas con operaciones lógicas
(2) Generalmente al escribir macros y/o tenemos operaciones de comparación, por eso aquí comparamos directamente los dos valores. Es comprensible que hacer operaciones lógicas es un poco incómodo.
Por ejemplo, si la primera oración no está clara, quedará claro si contiene falso y nulo, porque las reglas están dadas. ¿Puede el anfitrión explicarlo?
(3)
a y b: si a es falso, devuelve a; en caso contrario, devuelve b.
a o b: si a es verdadero, devuelve a; en caso contrario, devuelve b.
¿Cómo explicar esta regla, o es así como la estipula Lua? No hay explicación.
Cuestiones estructurales
(4) Si si... entonces... se menciona otra cosa en el artículo. ....
Pero cuando escriben macros ahora, muchas personas las anidan como si... entonces... si... entonces... si... ¿cumple con el estándar?
Finalmente, me gustaría agradecer al autor por el buen artículo.
BBS.NGACN.COM
Te extraño mucho, es verdad...
[Sexto piso] Zhu Xiao 2005-06-30 01 : 39
Nivel: Veterano
Publicaciones: 721
Reputación: 13
Riqueza: 13
1, sí, todas las variables no declaradas son globales. . . . Incluso las variables que defines dentro de las funciones. He realizado experimentos, como definir una variable A en una macro y asignarla a 1. Después de ejecutar, si la variable A también se usa en otra macro, si la llama en la macro sin reasignar el valor, el valor de A seguirá siendo el valor asignado a 1 en la macro que usó antes.
Pero generalmente no hay necesidad de preocuparse por los conflictos, porque en la mayoría de los casos, la mayoría de las personas estarán acostumbradas a reasignar una nueva variable en la macro, lo que generalmente no causa demasiado problema. Pero si realmente necesita algunas variables globales y puede identificarlas fácilmente, puede usar letras minúsculas para las variables locales y letras mayúsculas para las variables globales en la macro. Debido a que Lua distingue estrictamente entre mayúsculas y minúsculas, puede usar fácilmente variables locales y globales.
2,3, esto es un poco confuso. . . Déjame explicarlo de esta manera. De hecho, las operaciones de comparación que mencionaste son operaciones lógicas y todas son iguales. Es solo que Lua extiende el uso de and y or.
De hecho, normalmente and y or solo pueden usar valores booleanos, y los únicos resultados que pueden obtener son booleanos. Es decir, and and or solo puede operar con falso y verdadero, y el resultado es falso o verdadero. El funcionamiento es el siguiente:
Verdadero y Falso = Falso Verdadero y Falso = Falso
Falso y Falso = Falso Verdadero y Verdadero = Verdadero
Falso o Verdadero = Verdadero y Verdadero o falso = verdadero
falso o falso = falso verdadero o verdadero = verdadero
Pero Lua extiende los tipos de datos sobre los que y y o pueden operar para que también puedan operar con otros tipos de datos. Es por eso que tenemos esta definición conveniente (por supuesto, se puede decir una definición confusa)
a y b: si a es falso, devuelve a; de lo contrario, devuelve b;
a o b: si a es verdadero, devuelve a; en caso contrario, devuelve b.
Ahora podemos intentar sustituir las operaciones A y B por false y true:
a = false b = true
true false = false
Falso o verdadero = verdadero
a = verdadero b = falso
Verdadero o falso = falso
Verdadero o falso = verdadero
a = falso b = falso
Falso y falso = falso
Falso o falso = falso
a = verdadero b = verdadero
Verdadero y verdadero = verdadero
Verdadero o verdadero = verdadero
Como puede ver, el resultado es en realidad el mismo que nuestra operación lógica normal anterior. Lua es solo una extensión de and and or. Dado que Lua no tiene requisitos estrictos sobre la definición de tipos de datos, su funcionamiento es muy conveniente y puede adaptarse a varios tipos de datos. (En realidad, no es una explicación. Así es como ella lo definió. La conveniencia o la confusión es solo una idea, jaja)
3. Por supuesto que cumple con los estándares, y elseif pertenece al uso anidado. si no. Los dos usos son diferentes, aunque el resultado puede ser el mismo. Pero en algunos casos, el anidamiento es conveniente y en otros casos es conveniente.
BBS.NGACN.COM
[Yao Yao]
[Séptimo piso] Verano soleado
Nivel: Nivel de advertencia 1 p>
Publicaciones: 481
Reputación: -3
Loco. . . . . . . . . . . . . . . . . . . ¿Sólo los expertos en informática pueden jugar a este juego?
BBS.NGACN.COM
Tres deseos: [Sin tarjeta en la séptima área] [Sin cola en el campo de batalla entre servidores] [9 ciudades por determinar]
[ 8.º piso] Salón Shenzhen 2005-06-30 09: 47
Nivel: Cívico
Posición: 44
Reputación: 0 p>
La siguiente cita es de "Sunny Summer" publicada a las 07:12 del 30 de junio de 2005:
Crazy. . . . . . . . . . . . . . . . . . . ¿Sólo los expertos en informática pueden jugar a este juego?
La esencia de wow es garantizar que diferentes personas puedan encontrar su propia diversión.
Es posible que los expertos en informática no sean tan hábiles con el teclado como Kimchi, y es posible que Kimchi no sepa que los complementos y las macros no obstaculizan la propia diversión~
Siempre y cuando el reloj interfiere con los demás ~
Blizzard Son un grupo de genios, los he admirado durante 10 años: P
El cartel original es un maestro, es raro ser tan paciente, PFPF~
Originalmente quería publicar mis propias representaciones de complementos integrados, pero era demasiado vago para encontrar espacio para imágenes. Más tarde~
Utilicé la súper macro Lax Bigfoot Flexbar Titan Gather para mover cualquier cosa...
Bigfoot se actualizó ayer y abrió accidentalmente una nueva función. Me dijeron que la interfaz utilizaba más de 20 M de memoria y me vi obligado a abandonar el juego~
@ @Todavía estoy sudando~ ~ ~
Además, usar el Complemento SuperMacro, puede modificar el script de macro. La longitud de byte más larga aumenta a 1023.
Permitir que las teclas de método abreviado se vinculen directamente a macros (en lugar de arrastrarlas a la barra de acciones y luego vincularlas) y permitir el uso de otros nombres de macro.
Llamar a otras macros. Está listo para usar después de la instalación. Puede resolver el problema del límite de bytes mencionado por el pequeño MM.
[Esta publicación fue editada por szsharo a las 10:00 del 24 de julio de 2005]
BBS.NGACN.COM
El brujo es un elegante y noble profesión, especialmente el apuesto brujo enano~: P
[Piso 9] La vaca más cercana a Dios 2005-06-30 10:35
Nivel: Cívico
Publicado: 5
Reputación: 1
Riqueza: 1
Una persona de carácter noble