码迷,mamicode.com
首页 > 其他好文 > 详细

[lua]尝试一种Case语法糖

时间:2015-10-22 20:55:10      阅读:316      评论:0      收藏:0      [点我收藏+]

标签:

function CaseT(arg)
    local r = arg%10

    function proxy(caller)
        caller.yield(r)
    end -- proxy

    return
        function (cond)
            if (cond == r) then return proxy end
            return function() end
        end
end

function main()
    for i=1, 10 do
        local on = CaseT(math.random(0, i))
        on(1) {
          yield = function(r)
            print("CaseT.callback", i, r)
          end
        }
        on(2) {
          yield = function(r)
            print("CaseT.callback", i, r)
          end
        }
        on(3) {
          yield = function(r)
            print("CaseT.callback", i, r)
          end
        }
        on(4) {
          yield = function(r)
            print("CaseT.callback", i, r)
          end
        }
        on(5) {
          yield = function(r)
            print("CaseT.callback", i, r)
          end
        }
        on(6) {
          yield = function(r)
            print("CaseT.callback", i, r)
          end
        }
        on(7) {
          yield = function(r)
            print("CaseT.callback", i, r)
          end
        }
        on(8) {
          yield = function(r)
            print("CaseT.callback", i, r)
          end
        }
        on(9) {
          yield = function(r)
            print("CaseT.callback", i, r)
          end
        }
        on(0) {
          yield = function(r)
            print("CaseT.callback", i, r)
          end
        }
    end
end

main()

 

当尝试完这样的语法糖后,猛然才觉察出这里的Case执行并不能完成中断,根本就不叫switch case...

值得反思的是,支持面向对象组织的语言是不是都不提倡case 分解,而是提倡种类分型,不断向正确描述事务流程而精益求精。

[lua]尝试一种Case语法糖

标签:

原文地址:http://www.cnblogs.com/qianwen36/p/4902559.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!