守则上都写着:
#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有相同的基于原型的对象。
发布于 2011-08-25 13:07:06
在Lua中,loadfile()返回一个函数(而不是函数对象),函数只能被调用。“附加”任何像您正在尝试的函数都是不可能的。
现在,Lua表完全不同了,JavaScript中基于原型的概念可能适用于它们(我对JS不太熟悉)。此时,使代码工作的最简单方法是使fn全局化,即用fn = function...替换f.fn = function...,尽管这可能不是您想要的。
https://stackoverflow.com/questions/7190483
复制相似问题