2013-05-31 31 views
12

ルアでセミコロンの使用法に関する一般的な慣習があるかどうか疑問に思っていました。私はプログラミングのバックグラウンドから来ているので、セミコロンで終了するステートメントは直感的に正しいようです。しかし、私はなぜ彼らが"optional"であるのかについて懸念していました。一般に、他のプログラミング言語のセミコロンの終了ステートメントが受け入れられました。おそらくいくつかの利点がありますか?例えばLuaセミコロンの表記

lua programming guideから、これらはすべて、許容同等、および構文的に正確である:

a = 1 
b = a*2 

a = 1; 
b = a*2; 

a = 1 ; b = a*2 

a = 1 b = a*2 -- ugly, but valid 

作者も言及:Usually, I use semicolons only to separate two or more statements written in the same line, but this is just a convention.

は、一般的にLuaのコミュニティに受け入れられ、このです、またはありますほとんどの人が好まれる別の方法がありますか?それとも私の個人的な好みのように簡単ですか?

答えて

19

一般に、Luaのセミコロンは、複数の文を1行に書く場合にのみ必要です。例えばので

は:

local a,b=1,2 
print(a+b) 

私の頭の上オフ、私は私を使用するを持っていたのLua内の他の時間を思い出すことができない。

local a,b=1,2; print(a+b) 

代わりとして書かセミコロン

編集:lua 5.2のリファレンスを参照してください。あいまいさを避けるためにセミコロンを使用する必要がある他の共通の場所が1つあります - 単純なステートメントの後に関数呼び出しがあり、 。ここに手動の例がある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') 
+0

非常に有益です。ありがとう! – MrHappyAsthma

+12

実際、 'local a、b = 1,2 print(a + b)'は有効なLuaであり、あなたが期待することをします。あいまいさを防ぐには、セミコロンだけが必要です。途中でスペースにも同じことが起こります。これもうまく動作します。 'print(1)print(2)' – dualed