Lua 5.3 字符串库中所有函数的名称是什么?
What are the names of all function from the Lua 5.3 string library?
这是我用来注册库名称的函数名称注册闭包:
池对象:
function FooBarPool()
local Names = {}
local self = {}
function self:Register(fFoo,sName)
if(fFoo) then
Names[fFoo] = sName
end
end
function self:GetName(fFoo)
return Names[fFoo] or "N/A"
end
return self
end
创建池对象
local Pool = FooBarPool()
注册已知的库函数
Pool:Register(string.sub,"string.sub")
Pool:Register(string.gsub,"string.gsub")
Pool:Register(string.match,"string.match")
Pool:Register(string.gmatch,"string.gmatch")
Pool:Register(string.find,"string.find")
Pool:Register(string.gfind,"string.gfind")
Pool:Register(string.format,"string.format")
Pool:Register(string.byte,"string.byte")
Pool:Register(string.char,"string.char")
Pool:Register(string.len,"string.len")
Pool:Register(string.lower,"string.lower")
Pool:Register(string.upper,"string.upper")
Pool:Register(string.rep,"string.rep")
Pool:Register(string.reverse,"string.reverse")
for k,v in pairs(string) do
print(tostring(v) .. " : "..Pool:GetName(v))
end
如果将 print(k,v)
添加到最后一个循环,您会发现缺少 string.dump
。
函数string.gfind
不标准。它出现在 Lua 5.0 中,但在 Lua 5.1 中重命名为 string.gmatch
。
您可以通过
获取string
库中的所有名称
for k in pairs(string) do
print(k)
end
或查看 manual.
为什么不把字符串库的字符串函数列在一个数组中,然后迭代
他们使用 pairs 函数,因此:
字符串 = {"string.sub", "string.gsub", ..., "string.reverse"};
对于 _k,v 成对(字符串)做 print(v) 结束;
我发现这比上面给出的答案更容易。
顺便说一句,有没有更好的方法来解压所有字符串库字符串函数,而无需将它们列在 table?
中
这是我用来注册库名称的函数名称注册闭包:
池对象:
function FooBarPool()
local Names = {}
local self = {}
function self:Register(fFoo,sName)
if(fFoo) then
Names[fFoo] = sName
end
end
function self:GetName(fFoo)
return Names[fFoo] or "N/A"
end
return self
end
创建池对象
local Pool = FooBarPool()
注册已知的库函数
Pool:Register(string.sub,"string.sub")
Pool:Register(string.gsub,"string.gsub")
Pool:Register(string.match,"string.match")
Pool:Register(string.gmatch,"string.gmatch")
Pool:Register(string.find,"string.find")
Pool:Register(string.gfind,"string.gfind")
Pool:Register(string.format,"string.format")
Pool:Register(string.byte,"string.byte")
Pool:Register(string.char,"string.char")
Pool:Register(string.len,"string.len")
Pool:Register(string.lower,"string.lower")
Pool:Register(string.upper,"string.upper")
Pool:Register(string.rep,"string.rep")
Pool:Register(string.reverse,"string.reverse")
for k,v in pairs(string) do
print(tostring(v) .. " : "..Pool:GetName(v))
end
如果将 print(k,v)
添加到最后一个循环,您会发现缺少 string.dump
。
函数string.gfind
不标准。它出现在 Lua 5.0 中,但在 Lua 5.1 中重命名为 string.gmatch
。
您可以通过
获取string
库中的所有名称
for k in pairs(string) do
print(k)
end
或查看 manual.
为什么不把字符串库的字符串函数列在一个数组中,然后迭代 他们使用 pairs 函数,因此: 字符串 = {"string.sub", "string.gsub", ..., "string.reverse"}; 对于 _k,v 成对(字符串)做 print(v) 结束; 我发现这比上面给出的答案更容易。 顺便说一句,有没有更好的方法来解压所有字符串库字符串函数,而无需将它们列在 table?
中