Lua 分号约定

标签 lua conventions

我想知道 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

作者还提到:通常,我只使用分号来分隔同一行中编写的两个或多个语句,但这只是一种约定。

这是 Lua 社区普遍接受的,还是有其他大多数人喜欢的方式?还是就我个人喜好那么简单?

最佳答案

Lua中的分号一般只有在一行中写入多个语句时才需要。

例如:

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

也可以写为:

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

在我的脑海中,我不记得在 Lua 中任何其他时候我不得不使用分号。

编辑:查看 lua 5.2 引用资料,我看到另一个常见的地方,您需要使用分号来避免歧义 - 您有一个简单的语句,后跟一个函数调用或括号来对复合语句进行分组。这是位于 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')

关于Lua 分号约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16862337/

相关文章:

python - 私有(private)和公共(public)包模块?

python - 有没有办法在 Google App Engine (Python) 中运行 Lua 脚本?

hash - CRC32 整数散列到字符串

c++ - LuaPlus:如何让函数返回一个表?

sockets - Lua/NSE socket连接问题

c# - (约定)C# 类名

android - 应用程序可以在模拟器上运行,但不能在安卓上运行

asp.net-mvc - ASP.NET MVC 约定

CSS 文件属性 :value vs property: value (whitespace)

mysql - 为什么 MySQL 列不区分大小写?