尝试将函数附加到加载文件的结果时"attempt to index global 'f' (a function value)"



代码说明了一切:

#tryModA.lua:
f,err=loadfile("tryModB.lua")
if not f then
    print("F is nil!!! Err:"..err)
else
    f.fn=function (x)
        print("x="..x)
    end
    f()
end

下面是加载的文件:

#tryModB.lua:
fn("hello")
错误:

lua: tryModA.lua:7: attempt to index global 'f' (a function value)
stack traceback:
    tryModA.lua:7: in main chunk
    [C]: ?

问题:为什么会发生?

是不是真的,loadfile()返回一个函数对象,我可以附加另一个函数到它?PS.我有JavaScript编程背景,它有基于原型的对象。我假设Lua具有相同的基于原型的对象。

在Lua中,loadfile()返回一个函数(不是函数对象),函数只能被调用。

现在,Lua表是完全不同的故事,JavaScript的基于原型的概念可能适用于它们(我不太熟悉JS)。在这一点上,让你的代码工作的最简单的方法是使fn全局,即用fn = function...代替f.fn = function...,尽管这可能不是你想要的。

最新更新