在使用html5给懒人精灵开发web界面的时候,使用了前后端的事件挂接函数,其中用到了多个if判断。可以使用类似switch的方式来实现,更加优雅。
使用if判断
function onUIEvent(handle , event , arg1 , arg2 , arg3)
print(handle , event , arg1 , arg2 , arg3)
if event == "onload" then
print("窗口被加载了")
elseif event == "onclick" then
print("按钮点击事件:" , arg1 , arg2)
elseif event == "onchecked" then
print("多选框选中或反选事件:" , arg1 , arg2)
elseif event == "onselected" then
print("单选框或者下拉框事件:" , arg1 , arg2)
elseif event == "onclose" then
print("关闭窗口" , arg1)
closeWindow(handle , arg1)
elseif event == "onwebviewjsevent" then
print("webview事件" , arg1 , arg2 , arg3)
end
end
类似 switch
的实现
在 Lua 里并没有 switch
语句,不过可以借助表结构来达成类似 switch
的功能。下面是按照这种方式改写后的代码:
function onUIEvent(handle, event, arg1, arg2, arg3)
print(handle, event, arg1, arg2, arg3)
local eventHandlers = {
onload = function()
print("窗口被加载了")
end,
onclick = function()
print("按钮点击事件:", arg1, arg2)
end,
onchecked = function()
print("多选框选中或反选事件:", arg1, arg2)
end,
onselected = function()
print("单选框或者下拉框事件:", arg1, arg2)
end,
onclose = function()
print("关闭窗口", arg1)
closeWindow(handle, arg1)
end,
onwebviewjsevent = function()
print("webview事件", arg1, arg2, arg3)
end
}
local handler = eventHandlers[event]
if handler then
handler()
end
end
这种实现方案有诸多优点:
- 代码的可读性更强,结构也更加清晰。
- 事件处理函数实现了模块化,便于日后对单个事件处理逻辑进行修改或者维护。
- 要是需要添加新的事件类型,只需在
eventHandlers
表中增加对应的项即可,无需改动函数的整体结构。
不过要留意,在这个实现中,所有事件处理函数共享相同的闭包环境,这一点和原始代码是一样的。
1. 官方交流QQ群,添加多个不批。建议使用安卓手机或电脑申请。
飞云脚本圈: 586333520
Auto.js学习交流③群:286635606
Auto.js学习交流②群:712194666(满员)
IOS免越狱自动化测试群:691997586
2. 盗版,破解有损他人权益和违法作为,请各位会员支持正版。
3. 本站部分资源来源于用户上传和网络搜集,如有侵权请提供版权证明并联系站长删除。
4.如未特别申明,本站的技术性文章均为原创,未经授权,禁止转载/搬运等侵权行为。
5.全站所有付费服务均为虚拟商品,购买后自动发货。售出后概不接受任何理由的退、换。注册即为接受此条款。
6.如果站内内容侵犯了您的权益,请联系站长删除。
飞云脚本 » 【懒人精灵】使用switch来代替if,实现多个参数的判断
飞云脚本圈: 586333520

Auto.js学习交流③群:286635606
Auto.js学习交流②群:712194666(满员)
IOS免越狱自动化测试群:691997586
2. 盗版,破解有损他人权益和违法作为,请各位会员支持正版。
3. 本站部分资源来源于用户上传和网络搜集,如有侵权请提供版权证明并联系站长删除。
4.如未特别申明,本站的技术性文章均为原创,未经授权,禁止转载/搬运等侵权行为。
5.全站所有付费服务均为虚拟商品,购买后自动发货。售出后概不接受任何理由的退、换。注册即为接受此条款。
6.如果站内内容侵犯了您的权益,请联系站长删除。
飞云脚本 » 【懒人精灵】使用switch来代替if,实现多个参数的判断