Convenciones de Lua en punto y coma
conventions (2)
Me preguntaba si hay una convención general para el uso de puntos y comas en Lua, y si es así, ¿dónde / por qué debería usarlos? Vengo de un fondo de programación, por lo que las declaraciones finales con un punto y coma parecen intuitivamente correctas. Sin embargo, me preocupaba la razón por la que son "optional"
cuando generalmente se acepta que los signos de punto y coma terminan en otros lenguajes de programación. Tal vez hay algún beneficio?
Por ejemplo: de la guía de programación de lua , estos son todos aceptables, equivalentes y sintácticamente precisos:
a = 1
b = a*2
a = 1;
b = a*2;
a = 1 ; b = a*2
a = 1 b = a*2 -- ugly, but valid
El autor también menciona: Usually, I use semicolons only to separate two or more statements written in the same line, but this is just a convention.
¿Es esto generalmente aceptado por la comunidad Lua, o hay alguna otra forma que sea preferida por la mayoría? ¿O es tan simple como mi preferencia personal?
Los puntos y coma en Lua generalmente solo se requieren cuando se escriben varias declaraciones en una línea.
Así por ejemplo:
local a,b=1,2; print(a+b)
Alternativamente escrito como:
local a,b=1,2
print(a+b)
Desde lo alto de mi cabeza, no recuerdo ningún otro momento en Lua donde tuve que usar un punto y coma.
Edición: mirando en la referencia de lua 5.2 Veo otro lugar común donde necesitaría usar punto y coma para evitar la ambigüedad, donde tiene una declaración simple seguida de una llamada a la función o parens para agrupar una declaración compuesta. Aquí está el ejemplo del manual que se encuentra here :
--[[ Function calls and assignments can start with an open parenthesis. This
possibility leads to an ambiguity in the Lua grammar. Consider the
following fragment: ]]
a = b + c
(print or io.write)(''done'')
-- The grammar could see it in two ways:
a = b + c(print or io.write)(''done'')
a = b + c; (print or io.write)(''done'')
Por tener más de una cosa en una línea, por ejemplo:
c=5
a=1+c
print(a) -- 6
podría ser acortado a:
c=5; a=1+c; print(a) -- 6
También vale la pena señalar que si estás acostumbrado a Javascript, o algo así, donde tienes que terminar una línea en un punto y coma ( ;
), y estás especialmente acostumbrado a escribir eso, entonces esto significa que no tendrás para eliminar ese punto y coma ( ;
), y créeme, también estoy acostumbrado a Javascript, y realmente, ¡realmente me olvido de que no necesitas el punto y coma, cada vez que escribo una nueva línea!