首页 文章

似乎没有调用lua中所需文件的功能

提问于
浏览
1

我试图在LUA中使用 require 关键字来包含一个带有函数的文件,因为我是LUA的新手,我首先尝试了一个简单的打印函数:

globalfunctions.lua

local globalfunctions = {}

function printSomething()
    print("OOOK")
end

return globalfunctions

然后我试着写这个函数写:

local m = require "globalfunctions"
m.printSomething()

但是发生错误说 "attempt to call field printSomething (nil value)" 我做错了什么?

2 回答

  • 1

    问题是你声明了一个函数但是没有将它添加到你的模块中 .

    要将函数实际存储在 require 返回的模块中,需要将其添加到模块末尾返回的表中 .

    globalfunctions.printSomething = printSomething
    

    请注意,globalfunctions是一个欺骗性的名称选择,因为a)它本身是一个局部变量b)它将包含的函数也不是全局的,它们包含在你的模块中

    其次:理想情况下,为了使您的模块像大多数人期望的那样运行,您可以将函数设置为local,以便不污染全局命名空间(可能会覆盖现有变量) .

  • 2

    您将全局函数设置为本地值,这意味着它只能在本地运行,尝试将本地更改为全局 .

相关问题