. 和 : 的区别
lua的面向对象
Lua数据类型 nil number bool table string userdata thread function
Lua-字符串连接
C#与Lua交互过程及原理
Lua中的闭包
function reload_module(module_name)
local old_module = _G[module_name] --取得旧数据
package.loaded[module_name] = nil --当前模块置空
require (module_name)
local new_module = _G[module_name]
for k, v in pairs(new_module) do
old_module[k] = v --替换为新值
end
package.loaded[module_name] = old_module --重新赋值
end
再结合LuaFileWatcher去监听哪些lua文件发生了变化,就自动热重载该模块(其实实际作用不大)
**
**
local global_metatable = {}
setmetatable(_G, global_metatable)
global_metatable.__newindex = function(table, key, value)
error("禁止创建全局表: " … key)
end
function printTable(table, indent)
indent = indent or 0
local indentStr = string.rep(" ", indent)
for k, v in pairs(table) do
if type(v) == "table" then
print(indentStr .. k .. " (table):")
printTable(v, indent + 1) -- 递归,增加缩进级别
else
print(indentStr .. k .. " = " .. tostring(v))
end
end
end
function deepClone(object)
local tempTable = {}
local function _copy(object)
if type(object) ~= “table” then
return object
elseif tempTable[object] then
return tempTable[object]
end
local new_table = {}
tempTable[object] = new_table
for key, value in pairs(object) do
new_table[_copy(key)] = _copy(value)
end
return setmetatable(new_table, getmetatable(object))
end
return _copy(object)
end