You are on page 1of 6

ES P 8 2 6 6 (/)

HOG A R (/ )
MD ULOS
E S P- 01 M d ul o (/ mo d ul es / es p - 01/ )
E S P- 03 M d ul o (/ mo d ul es / es p - 03/ )
TUTOR IA L E S
Co mo c o nec ta r (/ tuto ri a l s / ho w- to - c o nnec t- to - a n- es p 8266- mo d ul e/ )
C mo emp uj a r c d i g o (/ tuto ri a l s / ho w- to - p us h- c o d e- to - a n- es p 8266- mo d ul e/ )
Fundamentos Lua (/tutorials /lua- bas ic s /)
Intro d uc c i n a l a A PI G PIO (/ tuto ri a l s / i ntro d uc ti o n- to - the- g p i o - a p i / )
Intro d uc c i n a l a A PI Ti m er (/ tuto ri a l s / i ntro d uc ti o n- to - the- ti m er- a p i / )
R E C E TA S
abrir y c errar de demos trac in (/rec ipes /blink - demo/)
TIE ND A ( / S HO P / )

tutoriales
Como conectar
(/tutorials/how-toconnect-to-an-esp8266module/)
Cmo empujar cdigo
(/tutorials/how-to-pushcode-to-an-esp8266module/)
Fundamentos Lua
(/tutorials/lua-basics/)
Introduccin a la API
GPIO
(/tutorials/introductionto-the-gpio-api/)
Introduccin a la API
Timer
(/tutorials/introductionto-the-timer-api/)

Fundamentos Lua

Fundamentos Lua
comentarios
Los comentarios pueden ser delimitados de dos maneras. Ellos pueden ser colocados entre - y
el extremo de la lnea.
Texto original
print ( "Hola" ) - Este bit aqu es un comentari
o
Comments can be delimited in two ways.
Sugiere
Comentarios multilnea se pueden colocar entre - [[ y ]] . una traduccin mejor

- [[
Print ( 'Este cdigo est comentado y gan \' t se emitir ')
-]]

Los delimitadores multilnea tienen una caracterstica muy til en ese cdigo que ha sido
comentada puede ser re-introducido con un solo carcter. Mediante la adicin de un espacio
para el delimitador de inicio, ambos delimitadores se convierten en lneas de comentario.
- [[
Print ( 'Este cdigo ya no es un comentario y se emitir' )
-]]

Variables
Se puede asignar un valor de cualquier tipo con ninguna variable.
locales foo = 2
locales bar = 'Hola'

Cualquier variable puede contener valores de diferentes tipos en diferentes momentos.


locales foo = 2
foo = 'Hola'

Una do bloque proporciona un mbito.


hacer
locales foo = 'Hola'
print ( 'Dentro del bloque hacer, foo' s valor es Hola: ', foo)
final
print ( ' Fuera de la do bloque, foo es nula: ', foo)

nil es un valor especial que significa una variable no est definida. Ajuste el valor de una

variable a cero , se elimina la variable y libera memoria, como si nunca hubiese existido.
locales foo = 'Hola'
foo = nil

Mesas
Lua tiene una estructura de datos que puede ser utilizado tanto como una matriz y / o como un
hash: la tabla. Las tablas se definen con llaves, {} . Una tabla matriz similar podra tener este
aspecto:
locales artculos = {}
table.insert (artculos, 12 )
table.insert (artculos, 'MOO' )
table.insert (artculos, verdadera )
-> Artculos == { 12 , 'MOO' , verdadera }
-> Artculos [ 0 ] == nil
-> Artculos [ 1 ] == 12
-> artculos [ 2 ] == 'Moo'
-> artculos [ 3 ] == verdadera

Notaste? los ndices de matrices comienzan en 1!


Una tabla hash-como podra tener este aspecto:
local de animales = {}
animal.type = "gato"
animal.name = 'Rub'
animal.strokable = verdadero
-> == Animales { tipo = "gato" , name = 'Rub' , strokable = verdadero }

Pero una mesa tambin puede ser a la vez una matriz y un hash al mismo tiempo:
locales todoList = {}
table.insert (todoList, 'Comprar presente )
table.insert (todoList, 'Wrap presente )
todoList.deadline = '12/24/2015'
- TodoList == { 'Comprar presente' , 'Wrap presente " , fecha lmite = '
12/24/2015 ' }

El # operador devuelve el nmero de elementos de la matriz-parte de una tabla.


locales items = { "A" , "B" , "C" , foo = 'bar' }
impresin ( #items) -> 3

funciones
El cdigo que se utiliza a menudo se puede colocar en funciones.
funcionar sayHello (receptor)
de impresin ( 'Hola,' ..recipient)
final

final
sayHello ( 'Roberto' )
sayHello ( 'Luiz' )
sayHello ( 'Waldemar' )

Una funcin puede devolver varios valores.


funcin getCoordinates ()
de retorno 12 , 55 , 123
final
locales x, y, z = getCoordinates ()
print (x, y, z) -> 12 55 123

Estructuras de Control
SI

A CONTINUACIN,

LOS DEMS

Puede ejecutar una sentencia si se cumple una condicin particular.


si kittenCount> 0 entonces
imprimir ( 'Tienes gatito (s)' )
final

Tambin puede bifurcar la ejecucin en muchos caminos.


si kittenCount == 0 y luego
imprimir ( "No tiene gatitos ' )
elseif kittenCount == 1 luego
de impresin ( "Usted tiene un gatito ' )
cosa
de impresin ( " Usted tiene muchos gatitos' )
final

Negacin
Las condiciones pueden ser negados utilizando no :
si no IsLoggedIn continuacin,
volver "invitado"
final

Cuidado con el raro operador "es igual a", ~ = .


si kittenCount ~ = 0 y luego
imprimir ( "Usted tiene gatitos! ' )
final

Coaccionar a booleano
Cuando coaccionar a un valor de otro tipo a un valor lgico, el nico valor que coacciona a
falso es nula ; cualquier otro valor coacciona a la verdad .

si 0 y luego
imprimir ( 'Cero coacciona a true' )
final
si '' a continuacin,
imprimir ( 'Las cadenas vacas coaccionan a true' )
final

Si {} entonces
imprimir ( 'mesas vacas coaccionan a true' )
final
si nil entonces
- Esto nunca se quedar
final

MIENTRAS
Puede recorrer mientras que una condicin se cumple antes de cada iteracin.
locales gatitos = { 'Sr. Tibbs' , 'Tufty' , 'Kipper' }
mientras #kittens> 0 hacen
locales gatito = table.remove (gatitos, 1 )
de impresin (gatito)
final

REPETIR HASTA
Puede tambin bucle hasta que se cumpla una condicin despus de una iteracin.
locales gatitos = { 'Sr. Tibbs' , 'Tufty' , 'Kipper' }
repetir
locales gatito = table.remove (gatitos, 1 )
de impresin (gatito)
hasta #kittens == 0

N U M R I C A PARA
Hay dos tipos de de bucle, numrico y genrico. El ms simple de los dos es el numrico
para :

para i = 1 , 10 hacer
- contar hasta
de impresin (i .. "banana" )
final
para i = 10 , 1 , - 1 hacerlo
- la cuenta atrs
de impresin (i .. 'botellas' verdes )
final
print ( 'i slo existe dentro del bucle, es ahora nada:' , i)

G E N R I C A DE
Tambin puede utilizar una funcin de repetidor, como ipairs () o pares () , para inyectar
valores en un bucle. Ipairs () slo itera sobre la matriz de parte de una tabla.
locales = aleatorias { 'arranque' , foo = 'bar' , 22 }
para la llave, val en ipairs (al azar) hacer
de impresin (clave, val)
final
-> 1
-> 2

de arranque
22

(pares) itera sobre todas las propiedades de una tabla.

locales = aleatorias { 'arranque' , foo = 'bar' , 22 }


para la llave, val en pares (al azar) hacer

para la llave, val en pares (al azar) hacer


de impresin (clave, val)
final
-> 1
de arranque
-> 2
22
-> Foo bar

Consejos y trucos
L A S L L A M A D A S A F U N C I O N E S N O S I E M P R E N E C E S I TA N
PARNTESI S
Si est de paso una sola cadena literal o una sola tabla literal a una funcin, no es necesario el
uso de parntesis.
imprimir "Hola, mundo".
set Estilo {
fontFamily = 'Helvetica' ,
fontSize = 18
color = 0 xffffff
}

OP ERADOR TERNARI O
No hay operador ternario en Lua, pero es comn el uso de operadores booleanos en su lugar.
de impresin (foo == nil y "indefinido" o foo)

VA L O R E S D E R E T O R N O N O U T I L I Z A D A S
Es una prctica comn el uso de un guin para representar un valor de retorno que no tiene
intencin de usar.
para _, valor en ipairs (artculos) hacer
de impresin ( valor )
final
locales _, _, zPosition = getCoordinates ()

E S C R I B I R L A C O R R E C TA M E N T E
De Lua.org (http://www.lua.org/about.html#name) :

"Lua" (pronunciado LOO-ah) significa "luna" en portugus. Como tal, no es ni un


acrnimo ni una abreviatura, pero un sustantivo. Ms especficamente, "Lua" es un
nombre, el nombre de la luna de la Tierra y el nombre de la lengua. Como la mayora
de nombres, debe escribirse en minsculas con un capital inicial, es decir, "Lua". Por
favor, no lo escriba como "LUA", que es a la vez feo y confuso, ya que entonces se
convierte en un acrnimo con diferentes significados
(http://acronyms.thefreedictionary.com/lua) para diferentes personas. As que, por
favor, escribir "Lua" derecho!

Palabras: paulcuth (https://twitter.com/paulcuth)

Imagen de Cabecera: fdecomite (https://www.flickr.com/photos/fdecomite/2710132377)


Editar: Enviar solicitud de extraccin (https://github.com/hackhitchin/esp8266-couk/blob/master/tutorials/lua-basics.md)

(https://twitter.com/esp8266couk)

Al comprar en nuestra tienda que est ayudando a Hitchin Hackspace, un grupo comunitario sin fines de lucro que promueve el
intercambio de habilidades, conocimientos y recursos. Gracias.

You might also like