语法规范
Lua语言中的标识符(或名称)是由任意字母、数字和下画线组成的字符(注意,不能以数字开头),大小写敏感
“下画线+大写字母”(例如_VERSION)组成的标识符通常被Lua语言用作特殊用途,应避免将其用作其他用途
保留字
and break do else elseif
end false goto for function
if in local nil not
or repeat return then true
until while
注释
单行注释--
多行注释--[[ 需要注释部分 --]]
或 --[[ 需要注释部分 ]]
需要重启多行代码时,只需要在多行注释开始部分多加"-",如:---[[ 需要注释部分 --]]
例
--[[
local function func(n)
if n == 0 then
return 1
else
return n * func(n - 1)
end
end
]]
--[[
for i = 1, 10, 1 do
print(i,"的阶乘:", func(i))
end
--]]
--代码重启部分
---[[
for i = 1, 10, 1 do
print(i,"的阶乘:", func(i))
end
--]]
Lua语言分号可加可不加
变量
定义和声明
变量无需定义类型,类似JavaScript里的var
变量无需声明即可使用,无赋值则默认是nil
(类似其它语言的null
),也就是不区分未初始化变量和被赋值nil
的变量
b ---> nul
b = 10 --> 10
全局变量和局部变量
Lua中默认变量类型为全局变量
b = 10 --全局变量
局部变量加上关键字local
local b = 10 --全局变量
类型和值
Lua中有8中基本类型:nil(空)
、boolean(布尔)
、number(数值)
、string(字符串)
、userdata(用户数据)
、function(函数)
、thread(线程)
、table(表)
type(nil) --> nul
type(true) --> boolean
type(10.4 * 3) --> number
type("Hello world") --> string
type(io.stdin) --> userdata io是输入输出 用于读写文件操作
type(print) --> thread
type({}) --> table
type(type(X)) --> string 不管X是什么,最后一行返回的永远是string。这是因为函数type的返回值永远是一个字符串
userdata
类型运行把任意C语言数据保存在Lua语言变量中,在Lua中,用户数据类型除了赋值和相等性测试外,没有其它预定义操作,被用来表示由应用或C语言编写的库所创建的新类型。例如:I/O库使用用户数据来打开的文件
变量没有预定义的类型,任何变量都可以包含任何类型的值
type(a) --> nul 'a'未初始化
a = 10
type(a) --> number
a = "a string"
type(a) --> string
a = nil
type(a) --> nil
nil
表示无效值,将nil赋值给变量相当于将其删除
Boolean
Lua中将除Boolean值false和nil外其它值视为真,包括零和空字符串
逻辑运算符
and
:如果第一个操作数为"false",则返回第一个操作数,否则返回第二个操作数
4 and 5 --> 5
nil and 13 --> nil
false and 13 --> false
or
:如果第一个操作数不为"false",则返回第一个操作数,否则返回第二个操作数
0 or 5 --> 0
false or "hi" --> "hi"
nil or false --> false
not
:返回Boolean
类型,类似取反
not nil --> true
not false --> true
not 0 --> true
not not 1 --> true
not not nil --> false