在学习Lua require关键字时,出现了一个错误“/usr/local/bin/lua: ./require_func.lua:4: attempt to index a function value (local 'mytest')”,如:

两个脚本内容如下
testRequire.lua
print("load file testRequest.lua")
function testRq(x)
print("in file testRequire.lua, input param is "..x)
end
return testRq
require_func.lua
#!/usr/local/bin/lua
local mytest = require("testRequire")
mytest.testRq("22")
这样调用是有问题的,因为require后,mytest已经是一个函数了,如修改成这样:
#!/usr/local/bin/lua
local mytest = require("testRequire")
print(type(mytest))

因为返回的已经是函数,所以require后就可以直接函数调用,修改如下:
#!/usr/local/bin/lua
local mytest = require("testRequire")
print(type(mytest))
mytest("11234343")


本文介绍了在 Lua 中使用 `require` 关键字时遇到的问题,即尝试索引一个函数值。通过分析 `testRequire.lua` 和 `require_func.lua` 的代码示例,解释了当 `require` 返回函数时直接调用的正确方式,并展示了修正后的代码。讨论了 `require` 语句后如何正确地调用和使用返回的函数。
607

被折叠的 条评论
为什么被折叠?



