转载:lua中switch

刚开始使用lua的人肯定会不满lua居然没有switch这个语法。

但是熟悉lua的强大特性之后,你会发现其实switch是完全没有必要提供的^.^,因为lua有强大的table和function

例子:

[plain] view plain copy

  1. local key = 1
  2. local switch = {
  3. [1] = function()
  4. print("switch:"..1)
  5. end,
  6. [2] = function()
  7. print("switch:"..2)
  8. end,
  9. ["test"] = function()
  10. print("switch:test")
  11. end,
  12. }
  13. local fSwitch = switch[key] --switch func
  14. if fSwitch then --key exists
  15. local result = fSwitch() --do func
  16. else --key not found
  17. end

模版如下:

[plain] view plain copy

  1. local switch = {
  2. [case1] = function()
  3. --case 1
  4. end,
  5. [case2] = function()
  6. --case 2
  7. end,
  8. }
  9. local fSwitch = switch[key] --switch func
  10. if fSwitch then --key exists
  11. local result = fSwitch() --do func
  12. else --key not found
  13. end

为sublime增加switch自动补全

方法:

1、菜单-Preferences-Tools-New Snippet ,sublime自动新建一个文件

2、把代码全部复制进去,然后保存,文件名填 switch.sublime-snippet

[plain] view plain copy

  1. <snippet>
  2. <content><![CDATA[local switch = {
  3. [${1:case1}] = function()
  4. ${2:--case 1}
  5. end,
  6. [${3:case2}] = function()
  7. ${4:--case 2}
  8. end,
  9. }
  10. local fSwitch = switch[${5:key}] --switch func
  11. if fSwitch then --key exists
  12. local result = fSwitch() --do func
  13. else --key not found
  14. end
  15. ]]></content>
  16. <tabTrigger>switch</tabTrigger>
  17. <scope>source.lua</scope>
  18. <description>switch-case</description>
  19. </snippet>

方法二:

1、新建文本文档,把复制代码进去,然后保存,文件名写switch.sublime-snippet

2、sublime菜单-Preferences-Browse Packages打开文件夹

3、把刚才保存的switch.sublime-snippet文件放入User目录里面

这样就可以在sublime里面使用了

效果如下

from: http://blog.csdn.NET/a82239946/article/details/42490405

时间: 2024-12-29 04:06:42

转载:lua中switch的相关文章

Lua中的常用语句结构以及函数

1.Lua中的常用语句结构介绍 --if 语句结构,如下实例: gTable = {"hello", 10} if nil ~= gTable[1] and "hello" == gTable[1] then print("gTable[1] is" , gStringTable[1]) elseif 10 == gTable[2] then print("gTable[2] is", gTable[2]) else prin

【转载】lua中的require机制

[转载自]http://blog.chinaunix.net/uid-552961-id-2736410.html lua中的require机制 为了方便代码管理,通常会把lua代码分成不同的模块,然后在通过require函数把它们加载进来.现在看看lua的require的处理流程. 1.require机制相关的数据和函数    package.path:保存加载外部模块(lua中"模块"和"文件"这两个概念的分界比较含糊,因为这个值在不同的时刻会扮演不同的角色)的

【转载】Lua中实现类的原理

原文地址 http://wuzhiwei.net/lua_make_class/ 不错,将metatable讲的很透彻,我终于懂了. ------------------------------------------------------------ Lua中没有类的概念,但我们可以利用Lua本身的语言特性来实现类. 下文将详细的解释在Lua中实现类的原理,涉及到的细节点将拆分出来讲,相信对Lua中实现类的理解有困难的同学将会释疑. 类是什么? 想要实现类,就要知道类到底是什么. 在我看来,

Lua_绑定tinyxml到Lua中解析XML

// XMLHelper.h class lua_State; // register parser functions to lua void RegisterLuaXML(lua_State *L); //XMLHelper.cpp #include "tinyxml.h" extern "C" { #include "lua.h" #include "lauxlib.h" #include "lualib.h&

Lua中的语句

[赋值] 赋值的基本含义是修改一个变量或一个table中字段的值,这个和其它语言没有多少区别,但是对于Lua,有一个特性,它允许"多重赋值",也就是一下子将多个值赋予多个变量,例如以下代码: local x1, x2 = 2, 4 print(x1) -->2 print(x2) -->4 在多重赋值中,Lua先对等号右边的所有元素求值,然后才执行赋值,例如以下用法,可以非常简便的交换两个元素的值: local x1, x2 = 2, 4 x1, x2 = x2, x1 p

Lua中table类型的源码实现

  1.概述 table是lua中唯一的表示数据结构的工具.它可以用于实现数据容器.函数环境(Env).元表(metatable).模块(module)和注册表(registery)等其他各种用途.因此了解table的实现是非常有必要的,根据<Lua中数据类型的源码实现>中知道,在Lua中,table是由结构体体Table来实现的.下面将以Lua 5.2.1的源码来看table的实现.   2.实现原理 在Lua5.0以后,table是以一种混合型数据结构来实现的,它包含一个哈希表部分和一个数

Lua中C API栈操作

向栈中压入数据: lua_pushnil(lua_State*); lua_pushboolean(lua_State*, bool); lua_pushnumber(lua_State*, lua_Number); lua_pushinteger(lua_State*, lua_Integer) lua_pushlstring(lua_State*, const char*, size_t); lua_pushstring(lua_State*, const char*); 获取栈中元素的类型

[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 function do_case_two( ... ) print("do_case_two") end local function do_default() pri

Lua中闭包详解 来自RingOfTheC[[email&#160;protected]]

这些东西是平时遇到的, 觉得有一定的价值, 所以记录下来, 以后遇到类似的问题可以查阅, 同时分享出来也能方便需要的人, 转载请注明来自RingOfTheC[[email protected]] 这里, 简单的记录一下lua中闭包的知识和C闭包调用 前提知识: 在lua api小记2中已经分析了lua中值的结构, 是一个 TValue{value, tt}组合, 如果有疑问, 可以去看一下 一些重要的数据结构 lua中有两种闭包, c闭包和lua闭包 两种闭包的公共部分: #define Clo