Red de conocimiento informático - Aprendizaje de código fuente - Programación de complementos

Programación de complementos

Diseño preliminar del programa Lua

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 todos han 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:

Imprimir("Hola mundo")

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, 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,..., variable n en la tabla o función de enumeración do... fin.

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 do y termina en Lua. Por ejemplo:

Termina la impresión ("Hola")

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:

"Éste".."Cadena." - igual a "Esta cadena"

. Operaciones de comparación

& lt& gt& lt= & gt= == ~=

Representan respectivamente menor que, 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 del 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 de 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:

^

Operación 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 a 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

D.

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 sientes lo mismo que yo, entonces en Lua podemos usar otra expresión: usar "[" y "]]" para encerrar cadenas de varias líneas, como:

page = [ [

& ltHTML & gt

& ltHEAD & gt

& ltTITLE & gtUna página HTML& lt/TITLE & gt;

& lt/HEAD & gt;

& ltBODY & gt

& ltA HREF="http://www.lua.org

Esta página no pertenece al sitio web de NGA , NGA no garantiza su seguridad

No volver a preguntarme [http://www.lua.org]" > Lua </A >

[[Texto en corchetes]]

& lt/BODY & gt;

& lt/HTML & gt; Vale la pena señalar que en este tipo de cadena, si hay un solo "[" o "]]", aún debe usar "[" o "]" para evitar ambigüedades. Por supuesto, esto rara vez es así.

E. Tabla

Tipo de tabla relacional, este es un tipo muy poderoso. Podemos pensar en este tipo como una matriz. Es solo que las matrices en C solo se pueden indexar con números enteros positivos; en Lua, se puede usar cualquier tipo para indexar una matriz, excepto nulo. De manera similar, en lenguaje C, el contenido de una matriz solo puede tener un tipo; en Lua, se puede usar cualquier tipo de valor como contenido de la matriz, excepto nulo.

La definición de Tabla es muy simple. 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"]={Edad=27, Gender="Male"}

Esta oración equivale a:

t 1[" John "]= { }: primero debe definirse como una tabla. Recuerde, las variables indefinidas son de tipo nulo.

T1["John"]["Edad"]=27

T1["John"]["Género"]= "Hombre"

Cuándo Cuando el índice de la tabla es una cadena, podemos abreviarlo como:

T1. Juan={}

T1. John. Edad=27 años

T1. John. Género = "masculino"

o

T1. John{Age=27, Gender="Male"}

Esta es una característica muy poderosa.

Al definir la tabla, podemos escribir todos los datos juntos entre "{" y "}", lo cual es muy conveniente y hermoso. Por ejemplo, la definición anterior de T1 podría escribirse de la siguiente manera:

T1=

{

10, - equivalente a [1] = 10.

[100] = 40,

John= - Si quieres también puedes escribir: ["John"] =

{

Edad = 27 - si lo prefieres, también puedes escribir: ["edad"] = 27.

Género=Hombre - Si lo prefieres, también puedes escribir: ["Género"]=Hombre.

},

20 - equivalente a [2] = 20

}

Se ve hermoso, ¿no? 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. La definición típica es la siguiente:

Función Agregar (a, b): Agregar es el nombre de la función, A y B son los nombres de los 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 a+b end

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

}

Material impreso (t.Edad) - 27

t.add(t, 10)

Material impreso (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 tiene experiencia en programación, creo que se acostumbrará rápidamente a Lua.

Al igual que el lenguaje C, Lua proporciona una cantidad considerable de 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

Return sqrt(c2)

Fin

print(Pythagoras(3, 4))

Resultados de ejecución

V

Descripción del programa

El formato de definición de una función en Lua es:

Nombre de función (parámetro)

. ..

Fin

A diferencia de Pascal, fin no necesita aparecer emparejado 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.

Las variables locales se definen en la función 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 lo llame el 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

Resultados de ejecución

Ahora soy 1

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

imprimir("Ahora soy"..i)

si i & lt2 entonces

imprimir("pequeño")

elseif i & ltEntonces 4

Imprimir("Mediano")

Otro

Imprimir("Grande")

Fin

Fin

Resultados de la ejecución

Ya tengo 1

Pequeño

Ya tengo 2 años

Medios

Ahora tengo 3 años

Medios

Ahora tengo 4 años

Mayor

Ahora tengo 5 años

Mayor

Descripción del programa

If else es fácil de usar, similar al lenguaje C, pero hay que tener en cuenta aquí está que se necesita todo el final de Si sólo uno.

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

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 "

-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 "]) ->20

a = nil - ahora solo "b" todavía se refiere a la tabla

b = nil - ahora no hay ninguna referencia a la tabla

B y a 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, tanto y como tienen operaciones de comparación, por lo que es comprensible que sea un poco incómodo realizar operaciones lógicas directamente en dos valores aquí.

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.

++++++++++++++++++++

Problema estructural

(4) Si si.. .Entonces....elseif se menciona en el artículo. ....

Pero cuando escriben macros ahora, mucha gente las anida como si... entonces... si... entonces... si... ¿cumple con los estándares?

++++++++++++++++++

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, y y o solo pueden operar con falso y verdadero, y el resultado es falso o verdadero. La operación es la siguiente:

Verdadero y falso = falso Verdadero y falso = falso

Falso y falso = falso Verdadero y verdadero = verdadero

Falso o verdadero = verdadero y falso 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 falso y verdadero:

a = falso b = verdadero

verdadero y falso = falso

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 son solo una idea, jaja)

3, por supuesto que cumple con los estándares, Nesting pertenece al uso anidado y elseif pertenece a. 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

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

La siguiente cita es de "Sunshine 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 admiro desde hace 10 años :P

El cartel es un maestro, es raro tener tanta paciencia, PFPF ~

Originalmente quería publicar mis propias representaciones de complementos integrados, pero era demasiado vago para encontrar espacio para las imágenes. Más tarde~

Usé Bigfoot+Flexbar+Titan+Gather+super macro+Lax+Move Anything+...

Ayer abrí accidentalmente la actualización de Bigfoot. Una nueva característica. 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 Dios2005-06-30 10:35

Nivel: Cívico

Publicado: 5

Reputación: 1

Riqueza: 1

Una persona de carácter noble