【懒人精灵】使用switch来代替if,实现多个参数的判断

在使用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

这种实现方案有诸多优点:

  1. 代码的可读性更强,结构也更加清晰。
  2. 事件处理函数实现了模块化,便于日后对单个事件处理逻辑进行修改或者维护。
  3. 要是需要添加新的事件类型,只需在 eventHandlers 表中增加对应的项即可,无需改动函数的整体结构。

不过要留意,在这个实现中,所有事件处理函数共享相同的闭包环境,这一点和原始代码是一样的。

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

企业级大数据智能营销管理系统

源码转让