如何将Lua函数以列表形式存储于文件中?

2026-06-05 11:275阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计441个文字,预计阅读时间需要2分钟。

如何将Lua函数以列表形式存储于文件中?

要列出Lua源文件中包含的所有函数名,可以使用以下Lua代码片段:

lua-- 假设Lua文件内容如下local function test1() print(Test 1)end

function test2() print(Test 2)end

-- 以下Lua代码将遍历当前文件的所有函数,并打印其名称local function listFunctions() local functionVisitor=function(self, name, env) if type(self)==table and name then print(name) end end

local function scan(env) local envType=type(env) if envType==table then for key, value in pairs(env) do scan(value) end elseif envType==function then local fnName=getinfo(env).name if fnName then functionVisitor(fnName, env) end end end

scan(_G)end

listFunctions()

运行这段代码,将会输出当前Lua源文件中定义的所有函数名。在这个例子中,它会输出:

test1test2

如何列出Lua源文件中包含的所有函数?

例如,我有fn.lua包含

如何将Lua函数以列表形式存储于文件中?

function test1() print("Test 1") end function test2() print("Test 2") end

我希望能够从另一个Lua脚本中显示这些函数名称(test1,test2).

我现在唯一能想到的方法是使用require包含文件,然后列出_G中的函数 – 但是这也将包括所有标准的Lua函数.

当然我可以使用字符串搜索功能手动解析文件,但这对我来说似乎不是很好!

这最终将成为允许开发人员在Lua中编写函数的过程的一部分,并且运算符可以从Excel(yuk!)中的列表中选择调用哪些函数.

如果你把它们都放在一个“模块”中(无论如何你应该这样做):

mymodule = { } function mymodule.test1() print("Test 1") end function module.test2() print("Test 2") end return mymodule

它变得微不足道:

mymodule = require"mymodule" for fname,obj in pairs(mymodule) do if type(obj) == "function" then print(fname) end end

如果你必须以原始形式保存它们,你必须以不同的方式加载它们以分离你的全局环境,然后以类似的方式迭代它(在内部env的清理_G上,也许).

本文共计441个文字,预计阅读时间需要2分钟。

如何将Lua函数以列表形式存储于文件中?

要列出Lua源文件中包含的所有函数名,可以使用以下Lua代码片段:

lua-- 假设Lua文件内容如下local function test1() print(Test 1)end

function test2() print(Test 2)end

-- 以下Lua代码将遍历当前文件的所有函数,并打印其名称local function listFunctions() local functionVisitor=function(self, name, env) if type(self)==table and name then print(name) end end

local function scan(env) local envType=type(env) if envType==table then for key, value in pairs(env) do scan(value) end elseif envType==function then local fnName=getinfo(env).name if fnName then functionVisitor(fnName, env) end end end

scan(_G)end

listFunctions()

运行这段代码,将会输出当前Lua源文件中定义的所有函数名。在这个例子中,它会输出:

test1test2

如何列出Lua源文件中包含的所有函数?

例如,我有fn.lua包含

如何将Lua函数以列表形式存储于文件中?

function test1() print("Test 1") end function test2() print("Test 2") end

我希望能够从另一个Lua脚本中显示这些函数名称(test1,test2).

我现在唯一能想到的方法是使用require包含文件,然后列出_G中的函数 – 但是这也将包括所有标准的Lua函数.

当然我可以使用字符串搜索功能手动解析文件,但这对我来说似乎不是很好!

这最终将成为允许开发人员在Lua中编写函数的过程的一部分,并且运算符可以从Excel(yuk!)中的列表中选择调用哪些函数.

如果你把它们都放在一个“模块”中(无论如何你应该这样做):

mymodule = { } function mymodule.test1() print("Test 1") end function module.test2() print("Test 2") end return mymodule

它变得微不足道:

mymodule = require"mymodule" for fname,obj in pairs(mymodule) do if type(obj) == "function" then print(fname) end end

如果你必须以原始形式保存它们,你必须以不同的方式加载它们以分离你的全局环境,然后以类似的方式迭代它(在内部env的清理_G上,也许).