Lua实现switch case
简单来说,除去使用if-else实现外,自然就是使用table表来实现了,具体看代码:
local switchNum = {
[1] = function() -- for case 1
print("Case 1.")
end,
[2] = function() -- for case 2
print ("Case 2.")
end,
[3] = function() -- for case 3
print ("Case 3.")
end
}
local switchStr = {
student = function() -- for case student
print ("Hi student, study hard remember.")
end,
teacher = function() -- for case teacher
print ("Hi teacher, thanks for your work hard.")
end,
coder = function() -- for case worker
print ("Go to Coding!!!.")
end
}
local switchTbl = {
table = function()
print("This's table.")
end
}
local switchBool = {
istrue = function() -- for case student
print ("This's true.")
end,
isfalse = function() -- for case teacher
print ("This's false.")
end,
}
local a = "coder"
local a = 3
local a = true
local a = {}
-- 判断case的对象是否存在
local isExit = switchNum[a] or switchStr[a] or switchTbl[type(a)] or switchBool["is" .. tostring(a)]
if isExit then -- for case doyourself
local f = 0
if type(a) == "number" then
f = switchNum[a]
elseif type(a) == "string" then
f = switchStr[a]
elseif type(a) == "table" then
f = switchTbl[type(a)]
elseif type(a) == "boolean" then
f = switchBool["is" .. tostring(a)]
end
f()
else -- for case default
print "Case default."
end
- 利用AssetsManager实现在线更新脚本文件lua、js、图片等资源(免去平台审核周期)
- 逆向分析Lua语言特性的设计与实现(一):闭包
- Lua学习笔记(五):面向对象的实现
- Lua继承原理(如何实现面向对象)
- 探索Lua5.2内部实现:编译系统(1) 概述
- Lua中实现类的原理
- 利用nginx+lua+memcache实现灰度发布
- lua数据库链接--mysql完整实现和luasql驱动API说明
- 鱼阵的LUA实现
- ftp+nginx+lua_Nginx+GraphicsMagick来实现目录浏览、实时缩略图
- openstry lua redis实现负载均衡
- 利用nginx+lua+redis实现反向代理方法教程
- Lua自己实现载入一个模块
- Lua自己实现angle角
- Lua 面向对象之继承的实现
- Lua的类实现继承、多态以及setmetatable方法
- cocos2dx lua中使用class实现继承api中的类
- 基于lua协程的AI服务实现
- Lua中实现sleep函数功能的4种方法
- cocos2dx-lua用原生httpClient实现http请求