Je me demandais s'il existait une convention générale pour l'utilisation des points-virgules dans Lua, et si oui, où/pourquoi devrais-je les utiliser? Je viens d'un contexte de programmation, donc les déclarations finales avec un point-virgule semblent intuitivement correctes. Cependant, je me demandais pourquoi ils sont "optional"
alors qu'il est généralement accepté que les points-virgules se terminent par des instructions dans d'autres langages de programmation. Peut-être qu'il y a un avantage?
Par exemple: Dans le guide de programmation lua , ils sont tous acceptables, équivalents et syntaxiquement précis:
a = 1
b = a*2
a = 1;
b = a*2;
a = 1 ; b = a*2
a = 1 b = a*2 -- ugly, but valid
L'auteur mentionne également: Usually, I use semicolons only to separate two or more statements written in the same line, but this is just a convention.
Est-ce généralement accepté par la communauté Lua, ou y a-t-il une autre façon préférée par la plupart? Ou est-ce aussi simple que ma préférence personnelle?
Les points-virgules de Lua ne sont généralement requis que pour l'écriture de plusieurs déclarations sur une ligne.
Donc par exemple:
local a,b=1,2; print(a+b)
Alternativement écrit comme:
local a,b=1,2
print(a+b)
De mémoire, je ne me souviens d'aucune autre fois à Lua où je devais utiliser un point-virgule.
Edit: en regardant dans la référence 5.2 de Lua, je vois un autre endroit commun où vous auriez besoin d’utiliser des points-virgules pour éviter toute ambiguïté - où vous avez une instruction simple suivie d’un appel de fonction ou de parenthèses pour regrouper une instruction composée. voici l'exemple de manuel situé ici :
--[[ 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')
Pour avoir plus d'une chose sur une ligne, par exemple:
c=5
a=1+c
print(a) -- 6
pourrait être réduit à:
c=5; a=1+c; print(a) -- 6
il convient également de noter que si vous êtes habitué à JavaScript, ou à quelque chose du genre, où vous devez terminer une ligne par un point-virgule (;
), et que vous êtes particulièrement habitué à l'écrire, cela signifie que vous n'aurez pas pour supprimer ce point-virgule (;
), et croyez-moi, je suis aussi habitué à Javascript et j'oublie vraiment vraiment que vous n'avez pas besoin du point-virgule (;
), à chaque fois que j'écris une nouvelle ligne!