原创文章,欢迎转载,转载请注明:文章来自[寒江孤叶丶的Cocos2d-x之旅系列]
博客地址:http://blog.csdn.net/qq446569365
这个东西其实没有什么难度,但是一个朋友跟我说他在面试时候居然遇到了“请用lua模拟Switch” 这道题……于是乎想起把自己之前写的拿出来分享一下……
代码很简单:
_G.Switch = _G.Switch or {} _G.Switch.SWITCH_MetaTABLE = { __index = function(t,k) if rawget(t,"default") then return rawget(t,"default") else return function () end end end,__Metatable = "请不要更改Switch的Metatable" } function _G.Switch:create() local switch = {} setMetatable(switch,_G.Switch.SWITCH_MetaTABLE) return switch end
测试代码:
local switch = Switch:create()--创建一个table作为switch的功能 switch[1] = function()--给switch的每个case设置函数 print("switch 1") end switch[2] = function() print("switch 2") end switch[3] = function() print("switch 3") end switch[4] = function() print("switch 4") end switch["default"] = function() print("switch default") end switch[1]() --将case的数值作为key调用table中的方法实现switch的模拟 switch[4]() switch[3]() switch[10]() switch["default"] = nil --把default的函数去掉 switch[11]() --这行将不会有任何输出
[LUA-print] switch 1
[LUA-print] switch 4
[LUA-print] switch 3
[LUA-print] switch default
原文链接:https://www.f2er.com/cocos2dx/341121.html