我是靠谱客的博主 还单身菠萝,最近开发中收集的这篇文章主要介绍Lua:02---Lua语法命名规范、;号的使用、Lua注释、Lua全局变量/局部变量、do-end代码块一、Lua语法命名规范二、分号的使用三、Lua注释四、Lua全局变量五、Lua局部变量,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、Lua语法命名规范

  • Lua语言对大小写是敏感的

标识符命名规则

  • Lua语言中的标识符(或名称)可以由:任意字母、数字、下划线组成,但是不能以数字开头
  • 例如下面都是符合规则的命名
i

i10

_ij

aSomeWthaLongName
  • 其中以“下划线+大写字母”组成的标识符通常被Lua语言用作特殊用途,应该避免使用。例如:
_VERSION

Lua的保留字

  • 下面是Lua语言的保留字,不能用作标识符

二、分号的使用

  • 在Lua语言中,分号的使用是可选的
  • 例如,下面的使用都是正确的
a = 1
b = a * 2

a = 1;
b = a * 2;

a = 1; b = a * 2

a = 1 b = a * 2   -- 不推荐使用这一种

三、Lua注释

单行注释

  • 两个连续的连字符(--)为单行注释,单行注释可以放在一行代码的后面
  • 例如:
-- 单行注释

a = 15  --将a设置为15

print("Hello World")  -- 打印a

多行注释

  • 多行注释的格式为:使用两个连续的连字符(--),后面加上两对方括号
  • 例如:
--[[
    下面的程序将a设置为15
    然后再打印a
]]

a = 15

print("Hello World")
  • 使用技巧:在使用多行注释时,可以将代码放在多行注释内;当需要再次启用注释中的代码时,可以在开头加上一个"-"号,在注释结尾加上"--"号
--[[
    print("Hello World") --这行代码被注释了
]]


---[[
    print("Hello World") --这行代码重新生效
--]]
  • 或者自己定义对行注释:
    • 格式为:在[[中间加上任意数量的等号,例如以--[==[开头,当遇到]==]时才算注释结尾
    • 这种语法在字符串文章中讲解过,可以参阅:https://blog.csdn.net/qq_41453285/article/details/107942933
--[==[
    自定义多行注释
]==]

--[===[
    自定义多行注释
]===]

四、Lua全局变量

  • 在Lua中,全局变量无须声明即可使用
  • 使用未初始化的全局变量时,得到的结果是nil

  • 把nil赋值给全局变量时,Lua会回收该全局变量

  • Lua语言不区分未初始化变量和被赋值为nil的变量。因为其两者最终丢回回收该变量占用的内存

五、Lua局部变量

  • 与全局变量不一样,局部变量的生效范围仅限于声明它的代码块(一个代码块是一个控制结构的主题,或是一个函数的主题,或是一个代码段(即变量被声明时所在的文件或字符串))
  • 局部变量会覆盖全局变量
  • 例如:
x = 10       -- 全局变量
local i = 1  -- 对于该代码段来说是局部的, 类似于C语言中的static全局变量

while i <= x do
    local x = i * 2  -- 局部变量x
    print(x)
    i = i + 1
end

if i > 20 then
    local x          -- 局部变量x
    x = 20
    print(x + 2)
else
    print(x)
end

print(x)  -- 操作全局的x

do-end代码块

  • 请注意,上面的代码在交交互式模式中不能正常运行。因为在交互模式下,每一行代码就是一个代码段(除非不是一条完整的命令)。一旦输入示例的第2行(local i = 1),Lua语言解释器就会直接运行它并在下一行开始一个新的代码段。这样,局部的声明就超出了原来的作用范围
  • 解决这个问题的一种方式是显式地声明整个代码块,即将它放入一对do-end代码块中
  • 一旦输入了do,命令就只在匹配到end时才结束,这样Lua语言解释器就不会单独执行每一行的命令
  • 当需要更好地控制某些局部变量的生效范围时,do程序块也同样有用:
local x1, x2
do
    local a2 = 2 * a
    local d = (b^2 - 4*a*c)^(1/2)
    x1 = (-b + d)/a2
    x2 = (-b - d)/a2
end       -- a2和d的声明周期在此结束
print(x1, x2)

局部变量与全局变量的比较

  • 局部变量相对于全局变量的优点:
    • 首先,局部变量可以避免由于不必要的命名而造成全局变量的棍乱
    • 其次,局部变量还能避免同一程序中不同代码部分中的命名冲突
    • 再次,访问局部变量比访问全局变量更快
    • 最后,局部变量会随着其作用域的结束而消失,从而使得垃圾收集器能够将其释放
  • 鉴于局部变量优于全局变量,有些人就认为 Lua 语言应该把变量默认视为局部的。然而,把变量默认视为局部的也有一系列的问题(例如非局部变量的访问问题)。一个更好的解决办法并不是把变量默认视为局部变量,而是在使用变量前必须先声明。 Lua语言的发行 版中有一个用于全局变量检查的模块strict.lua,如果试图在一个函数中对不存在的全局变量赋值或者使用不存在的变量变量 ,将会抛出异常。这在开发Lua语言代码时是一个良好的习惯

一种常见的用法

  • Lua中的一种常见用法如下:
foo = 1  -- 全局变量

do
    local foo = foo --局部变量
end
  • 这段代码声明了一个局部变量foo,然后用全局变量foo对其赋初值(局部变量foo只有在声明之后才能被访问)。这个用法在需要提高对foo的访问速度时很有用。当其他函数改变了全局变量foo的值,而代码段又需要保留foo的原始值时,这个用法也很有用,尤其是在进行运行时动态替换(monkey patching,猴子补丁)时。即使其他代码把print动态替换成 了其他函数,在local print = print语句之前的所有代码使用的还都是原先的print函数

最后

以上就是还单身菠萝为你收集整理的Lua:02---Lua语法命名规范、;号的使用、Lua注释、Lua全局变量/局部变量、do-end代码块一、Lua语法命名规范二、分号的使用三、Lua注释四、Lua全局变量五、Lua局部变量的全部内容,希望文章能够帮你解决Lua:02---Lua语法命名规范、;号的使用、Lua注释、Lua全局变量/局部变量、do-end代码块一、Lua语法命名规范二、分号的使用三、Lua注释四、Lua全局变量五、Lua局部变量所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部