Lua-基础知识
基础
数据类型
Lua语言是一种动态类型语言,有8种基本类型:
nil
空,表示无效值,将nil
赋值给其他变量则相当于将其删除boolean
布尔,包括true
和false
两个值,a and b or c
类似于三目运算符a ? b : c
number
数值string
字符串table
表function
函数userdata
用户数据thread
线程
注释
-- 方式一
-- local name = "Lua"
-- 方式二(这里可以快速打开注释使代码生效)
---[[
local is_test = true
if is_test then
name = "LuaTest"
end
--]]
函数调用
local function GetLen(t)
return #t
end
local function ErrorMsg(msg)
debug.traceback(msg, 3)
end
-- 代码报错
local len = GetLen({})
-- ok返回调用是否成功,result表示函数返回值,如果有的话
local ok,result = pcall(len, 2)
-- 与pcall一样,额外可以传入错误回调
local ok,result = xpcall(len, ErrorMsg, 2)
模块
模块引用
require "math"
require("math")
-- 可以赋值给局部变量
local m = require("math")
m.abs(-1)
require
会在表package.loaded
中检测模块是否已被加载。如果已经加载过,会直接返回相应的值。所以一旦一个模块被加载过,后续对同一模块的加载都会返回同一个值。
如果没有加载过,则会根据package.path
搜索指定的Lua文件,然后用loadfile
进行加载,结果就是一个被叫做加载器(loader
)的函数.
如果找不到lua文件,则会搜索C标准库,然后使用底层函数package.loadlib
进行加载。
想重复加载某一个模块,调用package.loaded[model_name] = nil
后,再加载即可