首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当尝试将函数附加到加载文件的结果时,“尝试索引全局'f‘(函数值)”

当尝试将函数附加到加载文件的结果时,“尝试索引全局'f‘(函数值)”
EN

Stack Overflow用户
提问于 2011-08-25 12:38:09
回答 1查看 5.7K关注 0票数 2

守则上都写着:

代码语言:javascript
复制
#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

下面是加载的文件:

代码语言:javascript
复制
#tryModB.lua:
fn("hello")

错误:

代码语言:javascript
复制
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有相同的基于原型的对象。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-25 13:07:06

在Lua中,loadfile()返回一个函数(而不是函数对象),函数只能被调用。“附加”任何像您正在尝试的函数都是不可能的。

现在,Lua表完全不同了,JavaScript中基于原型的概念可能适用于它们(我对JS不太熟悉)。此时,使代码工作的最简单方法是使fn全局化,即用fn = function...替换f.fn = function...,尽管这可能不是您想要的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7190483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档