lua-switch功能实现

Lua 起航 —— 一些常用基础语法 Lua 起航——常用基础语法 阅读详情
AI摘要

这篇博客介绍了在Lua中由于没有内置的Switch语句,如何通过利用表和匿名函数来模拟Switch功能。文章提供了三种不同的实现方式,分别是直接使用函数表、结合全局函数以及通过创建对象和方法。这些方法在条件判断较多且复杂的情况下,有助于提高代码的可读性和维护性。

lua中是没有Switch语法的,所以很多时候要条件判断的时候只有一条又一条的if 和elseif 去写。当条件比较多且条件里面的内容比较多的时候,会显得比较乱,而且不利于我们后期去维护。但是lua的table类型其实相当强大,我们可以利用表结构和匿名函数,我们就可以实现Switch功能。

下面,归纳了3种常用的写法(其实原理一样):

第一种:

local tab = {
    [1] = function()
              print("aaa")
          end,
    [2] = function()
              print("bbb")
          end,
    [3] = function()
              print("ccc")
          end,
}

function doFunc(cur_index)
    if tab[cur_index] then
        tab[cur_index]()
    end
end

第二种:

local tab = {
    [1] = "aaa",
    [2] = "bbb",
    [3] = "ccc",
}

function doFunc(cur_index)
    if tab[cur_index] then
        _G[tab[cur_index]]()
    end
end

function aaa()
    print("aaa")
end

function bbb()
    print("bbb")
end

function ccc()
    print("ccc")
end

第三种:

local Mgr = {}
switchMgr = Mgr

Mgr.tab   = {
    [1] = "aaa",
    [2] = "bbb",
    [3] = "ccc",
}

Mgr.doFunc = function(cur_index)
    if Mgr.tab[cur_index] then
        Mgr.tab[cur_index]()
    end
end

其他lua类调用的时候,可以

require("./switchMgr ") ;

switchMgr.doFunc(1)

Python爬虫实战:京东/淘宝商品价格与评论监控系统——从User-Agent伪装到编码陷阱的全面攻克 在电商数据驱动决策的今天,无论是个人消费者想抓住历史低价,还是市场分析师需要追踪竞品动态,抑或是算法交易员依赖实时价格信号,自动化的商品价格与评论监控系统都已成为不可或缺的工具。然而,电商平台的反爬虫策略日益严苛,字符编码的“暗坑”更是让初学者屡屡碰壁。本文将以京东(JD.com和淘宝(Taobao.com两大主流平台为目标,手把手带你构建一个稳定、高效的商品监控爬虫。User-Agent伪装——如何模拟真实浏览器行为,突破初级反爬。GBK/UTF-8编码混战。 阅读详情

相关推荐

[arcgis插件]在批量出图时,如何把图层属性表以动态表格的形式插入到布局页面

在批量出图时,如何把图层属性表以动态表格的形式插入到布局页面。

坐听风雨 4563

lua switch

lua实现switch 和 部分嵌套switch

qq_36248022的博客 1610

华硕笔记本全硬盘恢复原厂状态 实机操作,MYASUS IN WINRE恢复,ASUS RECOVERY恢复

本教程的前提的在之前就备份了原厂的RECOVERY分区,RESTORE分区,MYASUS分区 如果这些分区都没有的话那就只能找同型号笔记本的朋友要一份了,或者去售后,告诉他这三个分区都要恢复。一般售后为了节约硬盘空间,不会给你恢复restore分区,这个分区有将近20G。 我机器撒天选2 i7-11800H,3060,32G,512GB,型号FX506HM 这篇教程先说全格式化怎么做,下次有空再说免格式化怎么弄。下面开始。 首先首先你的先做给优盘或者移动硬盘做一个PE。网上做PE启动盘的教程很多,这

JamesCurtis的博客 3万+

Lua中实现Switch功能

熟悉Lua的大家应该都知道,Lua中是没有Switch语法的,所以很多时候要条件判断的时候只有一条又一条的if 和elseif 去写,但是很多时候看上去很不直观,但是Lua的table类型其实相当强大。利用表结构和匿名函数,我们就可以实现Switch功能。 以下是在项目中的一段应用代码: function UIActivityTemp.SetPageUIInfoWithIndex(index...

OneWord233的博客 6740

LMK04821时钟芯片SPI配置避坑指南:从寄存器读写到频率校准全流程

本文详细解析了LMK04821时钟芯片的SPI配置全流程,涵盖寄存器读写、频率校准及JESD204B系统设计中的关键技巧。通过实战案例和避坑指南,帮助工程师高效解决时钟输出异常、同步失败等常见问题,提升高速数据采集系统的时钟稳定性。

weixin_29172963的博客 159

点云配准实战:用DGCNN+Transformer+SVD搞定3D模型对齐(附PyTorch代码)

本文详细介绍了基于深度学习的点云配准实战方法,重点解析了Deep Closest Point (DCP)模型。该模型融合了DGCNN、Transformer和可微分SVD三大核心模块,能够端到端地预测点云间的刚性变换,有效克服传统ICP算法对初始位置敏感、易陷入局部最优的缺点。文章提供了完整的PyTorch代码实现、ModelNet40数据集处理、训练策略及显存优化技巧,旨在帮助开发者在机器人、自动驾驶等领域实现精准的3D模型对齐。

weixin_29061041的博客 154

[Lua]实现switch的一种方案

Lua实现switch的一种方案 欢迎前往个人博客驽马点滴和视频空间 哔哩哔哩-《挨踢日志》 if ... elseif ... end 形式 local ET_CASE_ONE = 1 local ET_CASE_TWO = 2 local function do_case_one( ... ) print("do_case_one") end local func...

humanxing的专栏 1万+

Postman调试海康ISAPI接口全记录:从鉴权失败到成功修改设备名的踩坑指南

本文详细记录了使用Postman调试海康ISAPI接口的全过程,从鉴权失败到成功修改设备名的实战经验。涵盖Digest认证机制、XML请求体构造、常见错误排查及代码实现过渡,帮助开发者高效解决海康设备集成中的各种问题。

weixin_42620913的博客 661

Lua程序设计学习笔记(一) Lua基本语法(1)

Lua基本语法(一) 1.  开始 (1)基本常识 lua中的标识符可以由任意字母、数字、下划线构成的字符串,但不能以数字开头。 全局变量不需要申明,直接赋值即可创建,删除变量直接赋nil。未申明的变量不会报错,直接返回nil。 行注释以“--”开头;块注释以“--[[”开始,“]]”结束,重启块注释加“-”即可。(住:块注释需独占一行) (2)Lua解析器   在代码文件中第一行输入:#!...

墨、砚 2696

get_seed协议

【代码】get_seed协议。

a545958498的博客 911

深度学习-161-Dify工具之对比使用工作流和聊天流生成图表可视化的html文件

分别使用聊天流和工作流进行数据分析结果的可视化,生成html文件。聊天流可以配置带记忆,这样就可以多次交互优化结果。

qq_20466211的博客 1709

lua实现switch功能

lua语言没有switch函数,但是可以通过if..else实现switch功能 function doSwitch(typ) if("v" == typ) then return "VISIT"; elseif("p" == typ) then return "PAGE"; elseif("c" =...

xichengxml的博客 1960

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Lua实现switch-case

switch是啥?别多想,不是年会发的那玩意儿 ! Lua君说:虽然我没有case,但是我有switch啊,而且你还可以随意改名字,比如你爱慕已久的CuiHua~ 实际上switch同学像是一个表,丢给它一个a,它就把case:a对应的地址给你,丢给它一个b,它就把case:b对应的地址给你,丢给它一个c,人家说,不好意思啊哥,我这儿没有c,就走default了哈~ 既然是这样,我们就造个这样的表...

Mo_Mo123的博客 4386

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Lua中通过table实现switch

因为lua中没有switch,但是可以通过功能强大的table间接去实现类似的功能: 首先先定义个table: switch={}; 然后定义需要的case,就是table内的元素: switch[1] = function()...end switch[2] = function()...end switch[3] = function()...end switch[n] = function()...end 调用的时候就直接: switch[case](); 但是我们会发现可能存在switch[ca

qq_22038235的博客 875

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Lua的语法缺失及替代措施

Lua的一个设计方针是简单,能不加入的语言特性就尽量不加入。于是,Lua中缺少了一些我们常用的语法。下面仅以C语言做参考。缺少continue语句,虽然对逻辑实现没本质影响。但让我们在编程时,代码结构的写法有一些生硬的感觉,不灵活。缺少了switch-case语法,仅用if-elseif-else来替代,在选项比较多的时候,代码很难看,而且效率很低。没有逻辑运算符 AND, OR, NOT ,这在

天地沙鸥 - Csdn站 1万+

lua中实现switch以及sublime下自动补全switch语法

刚开始使用lua的人肯定会不满lua居然没有switch这个语法。 但是熟悉lua的强大特性之后,你会发现其实switch是完全没有必要提供的^.^,因为lua有强大的table和function 例子: [plain] view plain copy local key = 1   local switch = {     

imxiangzi的专栏 2473

C# Switch 的使用与 Lua Switch的实现

简单的switch

qq_30238537的博客 982

【lua】switch case

switch case 的 语法糖 local fs = (function(name,args) local sw = { ["#default"]=function() return " " end, ["functionName"]=function(args)return callback(name,args) en

u014787719的博客 1029

解决Lua语法缺失及替代措施

解决Lua语法缺失及替代措施是本文要介绍的内容,主要是来了解LUA语法的学习。Lua的一个设计方针是简单,能不加入的语言特性就尽量不加入。于是,Lua中缺少了一些我们常用的语法。下面仅以C语言做参考。缺少continue语句,虽然对逻辑实现没本质影响。但让我们在编程时,代码结构的写法有一些生硬的感觉,不灵活。缺少了switch-case语法,仅用if-elseif-else来替代,在选项比较多的时...

weixin_30246221的博客 122

lua中利用table表模拟switch

因为lua中没有switch,有滴童鞋可能觉得太多if elseif 看着难受,不过其实我们可以利用table去模拟switch的功能. 首先定义一个表 switch={} 然后定义各个分支 switch[1]=function()...end switch[a]=function()...end ... ... 然后调用 switch[var]() 记得后面的()不要忘记哦!\(^o^)/~

芒果布丁00的博客 1493

switch 语句设计

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34138521的博客 171

Lua 语法实用技巧讲解

今天来讲一讲在日常开发lua中使用到的一些使用技巧。 本章会用c#来和lua对照着来讲。 首先第一个是C#的switch。在lua当中并没有switch,但是在lua当中我们可以使用table来实现。比如说C#代码是这样的: switch (n) { case 1: //do something break; case 2: //do something break;

weixin_44003966的博客 437

LUA 和 JAVA 的区别

没写完

干燥的空气,湿润的呼吸 1281

Lua学习笔记(1)

  最近在学Lua,看的是《Lua程序设计(第二版)》,似乎是唯一的中文资料了吧。且已经绝版,除了淘宝上能看到若干影印版外,其他的都找不到了。如果有朋友能找到正版的,请不吝相告 记录下初步的感受吧: 1.数据类型   Lua只有:nil(空)、boolean(布尔)、number(数值)、string(字符串)、userdata(自定义类型)、function(函数)、thread(线程)、...

weixin_34362991的博客 65

lua学习

lua学习 lua简介 设计目的 为了嵌入到应用程序中,从而为应用程序提供灵活的扩展和定制功能 特性 可扩展 提供扩展接口和机制,通常扩展到c/C++中 轻量级 使用C语言编写,开源,编译后100k, 方便嵌入到别的程序中 自动内存管理 支持面向过程和函数式编程 应用场景 游戏开发 独立脚本 web应用脚本 扩展和数据库插件:Mysql 环境安装 IDE:SciTe 需要安装vc++2005sp1 ,去官网下载 vsCode 调试环境复杂,git上好多做luadeb

L1ak的博客 637
下一篇: lua-三元运算符的坑
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值