Lua/es

From FxCodeBaseWiki
Jump to: navigation, search

Lua

¿Qué es Lua?

Lua es un extremadamente rápido, sencillo y poderoso caligrafiando idioma diseñado, poner en práctica y mantenido a PUC-Rio en Brazil. La fuerza de Lua han ser mucho demostrado en mucho aplicaciones que son tiempo-sensible, incluida real-tiempo estrategias como “World of Warcraft”. Hoy en los días, Lua se encima de 20 del mayoría popular programación idiomas en el mundo.

Lua oficial sitio de web: http://www.lua.org

¿Qué es Lua parece?

Sintaxis

En cuanto a la sintaxis, Lua es cercano a la Pascal familia de programación las idiomas (Pascal, ADA, Delphi). Hay no azúcar de sintaxis, como tan prefijo/postfijo los operadores o trabajo tan parte de las expresiones, tan en C++.

Compare el factorial función poner en práctica en C++, Pascal, y Lua.

C++:

 int fact(int value)
 {
     if (value == 0)
        return 1;
     else
        return fact(value - 1) * value;
 }

Pascal:

 function fact(n: integer): longint;
 begin
     if (n = 0) then
         fact := 1
     else
         fact := n * fact(n - 1);
 end;

Lua:

 function fact(n)
    if n == 0 then
       return 1;
    else
       return fact(n - 1) * n;
    end
 end

Los Conceptos

En cuanto a la programación de los conceptos, la idioma más cercana a Lua es JavaScript:

  • Lua tiene no tipos. Una variable puede toma algún valor.
  • Lua no requiere explicito declaración de variable. Si el valor no ha ser asigna antes de, lo sé justo una valor de nil.
  • La interfaz de Lua clases (conocido tan las tablas) es dinámicamente creada sencillamente por asignado la referencia a la función.

Tablas

El concepto de las tablas es concepto de más complicada para los recién llegados a Lua. Los cuadros son todo en Lua – ellos son clases, tablas de hash (diccionarios) y aun muestrario.

Tabla tan una tabla de hash.

Puede reserva y a continuación recupera un valor en la tabla usada alguna tecla:

 -- create a table
 a = {};
 -- put value 123 into the table with key "onetwothree"
 a["onetwothree"] = 123;
 -- retrieve the value by the key
 print(a["onetwothree"]);

Si la tecla es una cuerda, puede usa el operador de la punta (.) asignar o recuperar los valores. El ejemplo debajo hace exactamenteel mismo tan el previo ejemplo:

 -- create a table
 a = {};
 -- put value 123 into the table with key "onetwothree"
 a.onetwothree = 123;
 -- retrieve the value by the key
 print(a.onetwothree);

Puede mezcla la sintaxis tan bien. Por ejemplo, este código es también correcto y hace el mismo:

 -- create a table
 a = {};
 -- put value 123 into the table with key "onetwothree"
 a.onetwothree = 123;
 -- retrieve the value by the key
 print(a["onetwothree"]);

Tabla como una matriz.

Si utiliza un número de integré tan un tecla y los valores son asignada comenzando desde tecla 1, en una secuencia, sin espacio en el orden, Lua (y LuaJIT) optimizador reconocer que parte de los valores asignada tan un muestrario. Una alternativo (y mucho rápido) método de acceso es usada en que caso:

 local array, i;
 -- create a table
 array = {};
 -- fill the table
 for i = 1, 10, 1 do 
    array[i] = i * 20;
 end
 -- now keys 1 to 10 are stored as an array
 -- but we are still able to add additional properties to the dictionary part of the table
 array.first_item = 1;
 array.last_item = 10;
 -- this (access to the array part)...
 b = a[5];
 -- ...is faster than this (access to the dictionary part)
 c = a.first_item;

La Tabla es una clase.

Una referencia a la función puede también reservada en la tabla.

 -- create a table
 math = {};
 -- create an inline function and store the reference into the table 
 math.abs = function (x) 
              if x < 0 then
                 return -x;
              else
                 return x;
              end;
            end
 ...
 b = math.abs(-10);

Mira exactamente como una método de estatica del clase, no? Ahora que si queremos crear una instancia de métodos? La instancia de métodos debe reciben una referencia a la tabla, no deben los? Dejamos ver.

 -- create a table
 mytable = {};
 -- create a property
 mytable.x = 0;
 -- create a method
 mytable.inc = function (_this) 
                   _this.x = _this.x + 1;
               end

Ahora podemos usarlo como:

  mytable.inc(mytable);

Pero otros idiomas (excepto simple C) ha no necesita pasar este referencia explicitamente! Por que Lua? Why Lua does? Para como caso Lua tiene una “syntax sugar”, los dos puntas operador (:), tan él sobre llamada puede se escrito tan:

  mytable:inc();

¿Donde es Documentación?

  • La documentación del estandar Lua es incluido en los dos online y offline versiones del documentación de Indicore SDK.
  • Puede siempre refere a la Lua oficial sitio del web: http://www.lua.org.

¿Qué es Versión de Lua es Usada?

Indicore uso Lua 5.1.4 especificación y LuaJIT 2.0 aplicación del virtual maquina.

¿Es Indicore Compatible con 3rd-Partido Lua Extensiones?

Sí. Sin embargo, como se menciono anteriormente, utilizamos LuaJIT 2.0 en sustitutir de la original Lua virtual maquine, que es literalmente API/ABI compatible con la original Lua VM aplicación excepto una capacidad salvar o cargar Lua byte-code. LuaJIT 2.0 tenerlo sólo compiler que es no compatible con la original Lua VM.

Tan, justo comproba si el extensión es compatible con LuaJIT.

Este Artículo en Otros Idiomas

Language: English  • español • français • русский • 中文 • 中文(繁體)‎