Lua中的内部函数性能
2016-9-30 20:11:31
收藏:0
阅读:112
评论:2
我有一个特殊用户和普通用户列表。特殊用户有自己专门的函数,而普通用户使用标准函数。
我想到了这样的代码设计,但我觉得这不是最优的(性能方面)。
所以我的问题是:如何在调用像下面示例中的内部函数时获得最佳性能?
if something then
CallFunc(var)
end
特殊/普通用户逻辑
function CallFunc(var)
if table[name] then
table[name](var)
else
Standard_Func(var)
end
end
local table = {
["name1"] = function(var) Spec_Func1(var) end,
["name2"] = function(var) Spec_Func2(var) end,
["name3"] = function(var) Spec_Func3(var) end,
...
--40个不同的名称和不同的函数
}
特殊用户函数
function Spec_Func1(var)
--许多代码
end
function Spec_Func2(var)
--许多代码
end
...
--更多函数
编辑: 请参见@hjpotter92的答案:
我找不到表中的用户。
local function_lookups = {
name1 = Spec_Func1,--这使我不能找到用户
--name1 = 1 --这确实让我找到用户(测试)
}
如果function_lookups[name],这将无法找到用户
--做一些事情
end
点赞
用户3979429
你根本不需要一个特殊的函数!你可以使用一个通用的函数,其行为取决于调用者!让我用一段代码来解释:
local Special = {Peter=function(caller)end} --将特殊用户的函数放在这里
function Action(caller)
if Special[caller] then
Special[caller](caller)
else
print("Normal Action!")
end
end
因此,每当一个用户执行某个操作时,你可以调用这个函数并传递一个调用者参数,函数将在后台执行工作,确定是否是特殊调用者,如果是,则做什么。
这使得你的代码更加清晰。它也使得添加超过两个用户状态变得更加容易!
2016-10-03 03:01:33
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

你不需要另一个匿名函数。只需要像下面这样使用查找表:
local function_lookups = { name1 = Spec_Func1, name2 = Spec_Func2, name3 = Spec_Func3, ... --还有40个不同的名字和不同的函数 }请不要使用变量名
table。它是 Lua 中的可用库,你会覆盖它。