atcon atom condtions开源项目

我要开发同款
匿名用户2021年12月17日
93阅读
开发技术JavaScript
所属分类Atom插件、插件和扩展、Atom 插件
授权协议MIT License

作品详情

atconatcon是什么con即condition条件,atcon,指为条件而生;at也来源atom,代表它是一个原子操作;把复杂的ifelse逻辑转变为简单的原子操作,就在atcon。atcon的目标

和复杂的ifelse说再见

为什么

具体见使用atcon告别混乱的ifelse

使用方式npminstall--saveatconconstatcon=require('atcon');atcon(conditions,states,predicate);执行逻辑根据states数组项元素,依次查找condtions对象(也可以是数组)的state0属性,得到conditons1对象,再查找conditons1的state1属性......其实相当于一个reducepredicate接收reduce传进来的每一项的conditon[state],如果满足条件,predicate函数returntrue就退出查找,得到该值如果conditon[state]不存在,则重新回到上层查找,层层回溯,并获取该层对象的__DEFAULT__属性,传递给predicate,同样的,如果returntrue,退出查找,得到该值。其实相当于switch内的default具体例子constimgMap={online:{'2':{a:'img_b',b:'img_o'},'3':{a:'img_b',b:'img_p'},'4':'img_c','5':'img_d','6':'img_e'},offline:{'2':'img_h','3':'img_i','4':'img_j','5':'img_k','6':'img_l'},__DEFAULT__:'img_a'};constnoticeMap={b:{'3':'text3','5':'text5'},a:'textaaa',__DEFAULT__:'textdefault'};constisString=obj=>Object.prototype.toString.call(obj)==='[objectString]';atcon(imgMap,['online',3,'a'],isString);//'img_b'atcon(imgMap,['online',3,'c'],isString);//'img_a'atcon(imgMap,['offline',3,'v'],isString);//'img_i'atcon(imgMap,['noline'],isString);//'img_a'atcon(noticeMap,['b',1],isString);//'textdefault'atcon(noticeMap,['a',6,1,5,6],isString);//'textaaa'

注意

atcon(noticeMap,['b'],isString);//undefined

返回的是undefined,因为走进了switchcaseb的逻辑,但是switchcaseb是一个对象,没有满足isString的条件,而这里没有指定下一层状态的话,循环就会在这一层戛然而止,而不再做回溯。

更多例子可直接参考mochatest

最后

希望大家用得开心。

License

MIT

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论