Lua中的数据类型
nil
这个最简单,只有值nil属于该类,表示一个无效值(在条件表达式中相当于
false)。
boolean
包含两个值:false和true。
number
表示双精度类型的实浮点数
string
字符串由一对双引号或单引号来表示
function
由 C 或 Lua 编写的函数
userdata
表示任意存储在变量中的C数据结构
thread
表示执行的独立线路,用于执行协同程序
table
Lua 中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可
以是数字、字符串或表类型。在 Lua 里,table 的创建是通过"构造表达式"来完成,
最简单构造表达式是{},用来创建一个空表。
流程控制
if语句
if(布尔表达式)
then
--[ 在布尔表达式为 true 时执行的语句 --]
end
if..else语句
if(布尔表达式)
then
--[ 布尔表达式为 true 时执行该语句块 --]
else
--[ 布尔表达式为 false 时执行该语句块 --]
end
while循环
while(condition)
do
statements
end
for循环
for var=exp1,exp2,exp3
do
<执行体>
end
repeat...until语句
repeat
statements
until( condition )
函数
--[[ 函数返回两个值的最大值 --]]
function max(num1, num2)
if (num1 > num2)
then
result = num1;
else
result = num2;
end
return result;
end
-- 调用函数 ..:表示拼接
print("两值比较最大值为 ",max(10,4))
print("两值比较最大值为 ",max(5,6))
表
-- 初始化表
mytable = {}
-- 指定值
mytable[1]= "Lua"
-- 移除引用
mytable = nil
模块
模块定义
-- 文件名为 module.lua
-- 定义一个名为 module 的模块
module = {}
-- 定义一个常量
module.constant = "这是一个常量"
-- 定义一个函数
function module.func1()
print("这是一个公有函数")
end local function
func2()
print("这是一个私有函数!")
end
function
module.func3()
func2()
end
return module
require 函数
require("<模块名>")
require "<模块名>"
-- test_module.lua 文件
-- module 模块为上文提到到 module.lua
require("module")
print(module.constant)
module.func3()