lua*_*oob 28 c++ reflection lua function object
我是Lua的新手,并且在程序的alpha版本中将Lua作为脚本语言处理.开发人员没有响应,我需要获取一些可以从Lua代码访问的C++对象提供的函数列表.
有没有简单的方法来查看这些对象公开的字段和功能?
Fra*_*man 38
在Lua中,要查看对象的成员,可以使用:
for key,value in pairs(o) do
print("found member " .. key);
end
Run Code Online (Sandbox Code Playgroud)
不幸的是,我不知道这是否适用于从C++导入的对象.
u0b*_*6ae 19
如果在环境中允许,查看导出的C++对象的元表可以帮助:
for key,value in pairs(getmetatable(o)) do
print(key, value)
end
Run Code Online (Sandbox Code Playgroud)
打印所有全局变量:
-- globals.lua
-- show all global variables
local seen={}
function dump(t,i)
seen[t]=true
local s={}
local n=0
for k in pairs(t) do
n=n+1 s[n]=k
end
table.sort(s)
for k,v in ipairs(s) do
print(i,v)
v=t[v]
if type(v)=="table" and not seen[v] then
dump(v,i.."\t")
end
end
end
dump(_G,"")
来源:http://www.lua.org/cgi-bin/demo
输出:
_G
_VERSION
assert
bit32
arshift
band
bnot
bor
btest
bxor
extract
lrotate
lshift
replace
rrotate
rshift
collectgarbage
coroutine
create
isyieldable
resume
running
status
wrap
yield
debug
gethook
getinfo
getlocal
getmetatable
getupvalue
getuservalue
sethook
setlocal
setmetatable
setupvalue
setuservalue
traceback
upvalueid
upvaluejoin
dump
error
getmetatable
io
write
ipairs
load
math
abs
acos
asin
atan
atan2
ceil
cos
cosh
deg
exp
floor
fmod
frexp
huge
ldexp
log
log10
max
maxinteger
min
mininteger
modf
pi
pow
rad
random
randomseed
sin
sinh
sqrt
tan
tanh
tointeger
type
ult
next
os
clock
date
difftime
exit
setlocale
time
pairs
pcall
print
rawequal
rawget
rawlen
rawset
select
setmetatable
string
byte
char
dump
find
format
gmatch
gsub
len
lower
match
pack
packsize
rep
reverse
sub
unpack
upper
table
concat
insert
move
pack
remove
sort
unpack
tonumber
tostring
type
utf8
char
charpattern
codepoint
codes
len
offset
xpcall