6

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

对不起,如果这是一个非常简单的问题 - 但是......

Q1。如何列出可用于任何给定解释器实例的模块?

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

Q2。有没有办法在 Lua 的命令行中获得帮助?

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

Q3。GSL-Shell 的这个功能可以修改为帮助系统的基础吗?(即使它只是确认给定功能的存在也会有所帮助)

本地 ffi = 需要 'ffi'

本地帮助文件 = {'graphics'、'matrix'、'iter'、'integ'、'ode'、'nlfit'、'vegas'、'rng'、'fft'}

本地 cdata_table = {'矩阵','复杂矩阵','复杂'}

本地函数 help_init( ... )
    本地 REG = debug.getregistry()
    REG['GSL.help_hook'] = {}
结尾

本地函数 open_module(modname)
    本地全名 = string.format('help/%s', modname)
    本地 m = 要求(全名)
    返回米
结尾

本地函数 search_help(func)
    对于 k,ipairs(help_files) 中的 modname 执行
        本地 mt = getmetatable(func)
        本地模块 = open_module(modname)
        如果模块 [func] 那么
            本地帮助文本 = 模块 [函数]
            返回帮助文本
        结尾
    结尾
结尾

帮助初始化()

-- 声明一个全局函数
函数帮助(x)
    本地txt
    如果 type(x) == 'function' 那么
        txt = search_help(x)
    elseif type(x) == 'userdata' 然后
        本地 mt = getmetatable(x)
        if mt then txt = search_help(mt) end
    elseif type(x) == 'cdata' 然后
        本地 cname = gsl_type(x)
        if cname then txt = search_help(cname) end
    结尾
    --- 我们可以检查该函数是否存在?
    print(txt 或“没有找到给定函数的帮助”)
结尾
4

1 回答 1

1

Q2:没有像这样的标准帮助功能。已经有一些努力来标准化文档格式,但据我所知,它们都没有得到太大的牵引力。

Q3:假设您已经正确设置了帮助文件,该功能当然可以用作帮助系统的基础。

话虽如此,如果您只想找出给定模块中可用的功能,您通常可以转储模块表并找出答案。以 lua 演示中的globals 示例为例。

于 2013-11-04T17:32:31.307 回答