Lua

Lua基础知识

2020-02-25  本文已影响0人  ClownWang

1.模块与包

local module = {}
-- 定义一个常量
module.constant = "这是一个常量"
-- 定义一个函数
function module.func1()
    io.write("这是一个公有函数!\n")
end
local function func2()
    print("这是一个私有函数!")
end
return module
function require(module)
    -- 判断模块是否已经被加载
    if not package.loaded[module] then
        -- 获取模块的加载器
        local loader = findloader(module)
        if loader==nil then
            error("unable to load module "..module)
        end
        -- 将模块标记为已加载
        package.loaded[module] = true
        -- 初始化模块
        local result = loader(module)
        if result~=nil then
            package.loaded[module] = result
        end
    end
    return package.loaded[module]
end

问题

-代码内更新可以很好的利用此机制。

2. 元表与元方法

基础知识

问题

3. 弱引用Table

基础知识

local t = {};
--setmetatable(t, {__mode = "k"}) --key值弱引用
--setmetatable(t, {__mode = "v"}) --value值弱引用
--setmetatable(t, {__mode = "kv"}) --key和value弱引用

-- 使用一个table作为t的key值
local key = {name = "key"}
t[key] = key
key = nil

-- 使用一个table作为t的key值
local value = {name = "value"}
t["value"] = value
value = nil

-- 强制进行一次垃圾收集
collectgarbage();
    
for key, value in pairs(t) do
    print(value.name)
end

问题

上一篇 下一篇

猜你喜欢

热点阅读