Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Module 如何在命令行中列出模块并检查是否存在函数?_Module_Lua_Luajit - Fatal编程技术网

Module 如何在命令行中列出模块并检查是否存在函数?

Module 如何在命令行中列出模块并检查是否存在函数?,module,lua,luajit,Module,Lua,Luajit,像许多(windows)用户一样,“我不想花时间学习从源代码编译任何东西。 所以Lua对于业余爱好者来说似乎是一个很好的选择 很抱歉,如果这是一个非常简单的问题-但是 问题1。如何列出任何给定解释器实例可用的模块 有些二进制发行版有许多编译为DLL的模块,有些则将它们添加到主EXE中。 最好知道EXE中内置了哪些模块,并检查cpath是否正在查找任何其他DLL模块 问题2。在Lua中,有没有办法在命令行获得帮助 由于我是Lua的新手,我希望有一个简单的方法来获得任何给定函数的帮助。 在一些解释语

像许多(windows)用户一样,“我不想花时间学习从源代码编译任何东西。 所以Lua对于业余爱好者来说似乎是一个很好的选择

很抱歉,如果这是一个非常简单的问题-但是

问题1。如何列出任何给定解释器实例可用的模块

有些二进制发行版有许多编译为DLL的模块,有些则将它们添加到主EXE中。 最好知道EXE中内置了哪些模块,并检查cpath是否正在查找任何其他DLL模块

问题2。在Lua中,有没有办法在命令行获得帮助

由于我是Lua的新手,我希望有一个简单的方法来获得任何给定函数的帮助。 在一些解释语言中有一个帮助(“fname”)函数,Matlab就是一个很好的例子

第三季度。GSL Shell的此功能是否可以作为帮助系统的基础进行修改? (即使它只是确认了给定函数的存在,也会有所帮助)

本地外国金融机构=需要“外国金融机构” 本地帮助文件={'graphics','matrix','iter','integ','ode','nlfit','vegas','rng','fft'} 本地cdata\u表={'matrix','complex matrix','complex'} 本地函数help_init(…) local REG=debug.getregistry() REG['GSL.help_hook']={} 结束 本地函数打开_模块(modname) local fullname=string.format('help/%s',modname) 本地m=require(全名) 返回m 结束 本地函数搜索帮助(func) 对于k,ipairs(帮助文件)中的modname 本地mt=getmetatable(func) 本地模块=打开模块(modname) 如果模块[func],则 本地帮助\文本=模块[func] 返回帮助文本 结束 结束 结束 help_init() --声明一个全局函数 功能帮助(x) 本地文本 如果类型(x)=“功能”,则 txt=搜索帮助(x) elseif type(x)==“userdata”然后 本地mt=getmetatable(x) 如果是mt,则txt=搜索帮助(mt)结束 elseif type(x)=“cdata”然后 本地cname=gsl_类型(x) 如果是cname,则txt=搜索帮助(cname)结束 结束 ---我们可以检查该函数是否存在吗? 打印(txt或“未找到给定函数的帮助”) 结束
问题2:没有任何像这样的标准帮助功能。在文档格式的标准化方面已经做了一些努力,但据我所知,这些努力都没有取得太大的进展

问题3:如果您已经正确设置了帮助文件,那么该功能当然可以用作帮助系统的基础


也就是说,如果您只想了解给定模块中有哪些功能可用,您通常只需转储modules表并查找即可。以lua演示中的为例。

Q1:没有内置的或真正集中的方法来实现这一点。我的建议是签出和Lua包经理:)也。。。也许你会发现(Lua for Windows)项目也很有用。。。 local ffi = require 'ffi' local help_files = {'graphics', 'matrix', 'iter', 'integ', 'ode', 'nlfit', 'vegas', 'rng', 'fft'} local cdata_table = {'matrix', 'complex matrix', 'complex'} local function help_init( ... ) local REG = debug.getregistry() REG['GSL.help_hook'] = {} end local function open_module(modname) local fullname = string.format('help/%s', modname) local m = require(fullname) return m end local function search_help(func) for k, modname in ipairs(help_files) do local mt = getmetatable(func) local module = open_module(modname) if module[func] then local help_text = module[func] return help_text end end end help_init() -- declare a global function function help(x) local txt if type(x) == 'function' then txt = search_help(x) elseif type(x) == 'userdata' then local mt = getmetatable(x) if mt then txt = search_help(mt) end elseif type(x) == 'cdata' then local cname = gsl_type(x) if cname then txt = search_help(cname) end end --- Could we check that the function exists? print(txt or "No help found for the given function") end