3

我正在为我的 Lua IDE 开发代码完成控件

https://github.com/AndersMalmgren/FreePIE

我正在使用反射来获取可从脚本访问的 C# 对象信息,但我也希望在列表中包含 Lua 特定的东西,比如数学库等。

有没有办法得到这些?还想获取所有关键字,例如 if、then、end 等

4

1 回答 1

6

有没有办法得到这些?

该手册包含所有内容,但您也可以在启动时遍历全局名称空间以获取所有内容(您必须尽早执行此操作,然后再将任何内容添加到名称空间!)。如果某物是一个表,那么它也是一个类似stringor的命名空间table,您可以遍历它来获取方法。

local exclude = { _G = true, _VERSION = true, arg = true }
for name, value in pairs(_G) do
    if not exclude[name] then
        print(name)
        if type(value) == 'table' then
            for name, value in pairs(value) do
                print('\t', name)
            end
        end
    end
end

产生以下内容:

string
                sub
                upper
                len
                gfind
                rep
                find
                match
                char
                dump
                gmatch
                reverse
                byte
                format
                gsub
                lower
xpcall
package
                preload
                loadlib
                loaded
                loaders
                cpath
                config
                path
                seeall
tostring
print
os
                exit
                setlocale
                date
                getenv
                difftime
                remove
                time
                clock
                tmpname
                rename
                execute
unpack
require
getfenv
setmetatable
next
assert
tonumber
io
                lines
                write
                close
                flush
                open
                output
                type
                read
                stderr
                stdin
                input
                stdout
                popen
                tmpfile
rawequal
collectgarbage
getmetatable
module
rawset
math
                log
                max
                acos
                huge
                ldexp
                pi
                cos
                tanh
                pow
                deg
                tan
                cosh
                sinh
                random
                randomseed
                frexp
                ceil
                floor
                rad
                abs
                sqrt
                modf
                asin
                min
                mod
                fmod
                log10
                atan2
                exp
                sin
                atan
debug
                getupvalue
                debug
                sethook
                getmetatable
                gethook
                setmetatable
                setlocal
                traceback
                setfenv
                getinfo
                setupvalue
                getlocal
                getregistry
                getfenv
pcall
table
                setn
                insert
                getn
                foreachi
                maxn
                foreach
                concat
                sort
                remove
newproxy
type
coroutine
                resume
                yield
                status
                wrap
                create
                running
select
gcinfo
pairs
rawget
loadstring
ipairs
dofile
setfenv
load
error
loadfile
于 2012-08-06T19:10:39.023 回答