29

Lua でセミコロンを使用するための一般的な規則があるかどうか疑問に思っていました。私はプログラミングのバックグラウンドを持っているので、セミコロンでステートメントを終了することは直感的に正しいようです。"optional"しかし、セミコロンが他のプログラミング言語でステートメントを終了することが一般的に受け入れられているのに、なぜそれらがあるのか​​ について心配していました。何かご利益があるのではないでしょうか?

例: lua プログラミング ガイドによると、これらはすべて受け入れ可能で、同等であり、構文的に正確です。

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 コミュニティに一般的に受け入れられているのでしょうか、それともほとんどの人が好む別の方法はありますか? それとも、私の個人的な好みと同じくらい単純ですか?

4

5 に答える 5

35

通常、Lua のセミコロンは、1 行に複数のステートメントを記述する場合にのみ必要です。

たとえば、次のようになります。

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

代わりに次のように記述します。

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

頭のてっぺんから、Lua でセミコロンを使用しなければならなかったときは、他に思い出すことができません。

編集:lua 5.2リファレンスを見ると、あいまいさを避けるためにセミコロンを使用する必要がある別の一般的な場所が1つあります。単純なステートメントの後に関数呼び出しまたは括弧が続き、複合ステートメントをグループ化する場所です。ここにある手動の例は次のとおりです。

--[[ 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')
于 2013-05-31T17:51:00.950 に答える