lua conventions

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!