¿Dónde puedo aprender programación informática?
Hay muchos lugares donde estudiar, como bibliotecas, manuales oficiales, colegios, etc.
Debe proporcionar una función de controlador de mensajes que se llamará cuando se produzca un error. Esta función necesita recibir el mensaje de error original y devolver un nuevo mensaje de error. Se llama después de que ocurre un error cuando la pila no se ha expandido, por lo que la pila se puede usar para recopilar más información, por ejemplo, sondeando la pila para crear un conjunto de información de seguimiento de la pila. Al mismo tiempo, la función del controlador también está en modo protegido, por lo que un error que ocurra dentro de la función la activará nuevamente (recursivamente). Si la recursividad es demasiado profunda, Lua finaliza la llamada y devuelve un mensaje apropiado.
El tipo permite guardar datos en C en variables Lua. El valor del tipo de datos del usuario es un bloque de memoria. Hay dos tipos de datos de usuario: datos de usuario completos, que se refieren a un objeto correspondiente a una parte de la memoria administrada por Lua, datos de usuario livianos, que se refieren a un puntero C simple. . Los datos del usuario no tienen otras operaciones predefinidas en Lua excepto la asignación y el juicio de igualdad. Al utilizar metatablas, los programadores pueden definir una serie de operaciones sobre datos completos del usuario (ver §2.4). Solo puede crear o modificar valores de datos de usuario en código Lua a través de la API C, lo que garantiza que los datos solo estén controlados por el programa host.
El tipo de hilo representa una secuencia de ejecución independiente y se utiliza para implementar corrutinas (ver §2.6). Los hilos de Lua no tienen nada que ver con los hilos del sistema operativo. Lua proporciona soporte de rutina para todos los sistemas, incluidos aquellos que no admiten subprocesos nativos.
La tabla es una matriz asociativa, es decir, esta matriz no solo está indexada por números, sino que también se pueden indexar todos los valores de Lua excepto nil y NaN. (No es un número es un número especial que se utiliza para representar resultados de operaciones no definidos o no representables, como 0/0). Las tablas pueden ser heterogéneas, es decir, pueden contener cualquier tipo de valor (excepto nulo). Si el valor de cualquier clave es nulo, no se registrará dentro de la estructura de la tabla. En otras palabras, las claves que no existen en la tabla corresponden al valor nulo.
La tabla es la única estructura de datos en Lua. Puede usarse para representar matrices, secuencias, tablas de símbolos, conjuntos, registros, gráficos, árboles, etc. Para los registros, Lua utiliza nombres de dominio como índices. El lenguaje proporciona azúcar sintáctico como a.name para reemplazar el método de escritura a["nombre"] para facilitar el registro del uso de esta estructura. Hay varias formas convenientes de crear tablas en Lua (ver §3.4.9).
Utilizamos el término secuencia para referirnos a una tabla indexada por el conjunto de enteros positivos {1..n}. El número entero no negativo n aquí se denomina longitud de la secuencia (ver §3.4.7).
Al igual que los índices, el valor de cada campo de la tabla puede ser de cualquier tipo. Lo que hay que señalar en particular es que, dado que las funciones son ciudadanos de primera clase, los campos de la tabla también pueden ser funciones. De esta forma, la tabla puede contener métodos. (Ver §3.4.11).
El principio de indexación de una tabla sigue las reglas de comparación directa del lenguaje. Las expresiones a[i] y a[j] representan el mismo elemento en la lista si y sólo si i y j se comparan directamente como iguales (es decir, sin comparación a través de metamétodos). En particular: un número de punto flotante que se puede representar completamente como un número entero es igual al número entero correspondiente (por ejemplo: 1,0 == 1). Para eliminar la ambigüedad, cuando se utiliza como valor clave un número de punto flotante que se puede expresar completamente como un número entero, se convertirá al número entero correspondiente y se almacenará. Por ejemplo, cuando escribes a[2.0] = true, la clave realmente insertada en la tabla es el número entero 2. (Por otro lado, 2 y "2" son dos valores Lua diferentes, por lo que pueden ser elementos diferentes en la misma tabla).