lua: dofile 调用

发布时间 2024-01-05 09:57:17作者: 小小忧愁米粒大

lua版本: 5.3.6

1.example.lua

function add(a,b)
    print("enter add")
    return a+b
end

return{
    -- handle 是 dofile 返回的句柄, 将 add 赋值给 handle, 就要通过 handle 调用 add 方法
    handle=add
}

2. 直接调用函数

dofile直接调用函数, 如果调用过程中函数异常,无法处理异常

local example = dofile("D:/work/project/dics-lua/src/com/skd/example.lua")
result = example.handle(1,2)
print("result",result)

执行结果

enter add
result	3

3. 保护模式调用函数

local example = dofile("D:/work/project/dics-lua/src/com/skd/example.lua")
success, result = pcall(example.handle,1,2)
if success then
    print("add success, result",result)
else
    print("add err",result)
end

success, result = pcall(example.handle,"a","2")
if success then
    print("add success, result",result)
else
    print("add err",result)
end

执行结果

enter add
add success, result	3
enter add
add err	D:/work/project/dics-lua/src/com/skd/example.lua:4: attempt to perform arithmetic on a string value (local 'a')