atcon atom condtions开源项目

我要开发同款
匿名用户2021年12月17日
143阅读

技术信息

开源地址
https://github.com/vscode-neovim/vscode-neovim
授权协议
MIT License

作品详情

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

和复杂的ifelse说再见

为什么

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

使用方式pmistall--saveatcocostatco=require('atco');atco(coditios,states,predicate);执行逻辑根据states数组项元素,依次查找codtios对象(也可以是数组)的state0属性,得到coditos1对象,再查找coditos1的state1属性......其实相当于一个reducepredicate接收reduce传进来的每一项的codito[state],如果满足条件,predicate函数returtrue就退出查找,得到该值如果codito[state]不存在,则重新回到上层查找,层层回溯,并获取该层对象的__DEFAULT__属性,传递给predicate,同样的,如果returtrue,退出查找,得到该值。其实相当于switch内的default具体例子costimgMap={olie:{'2':{a:'img_b',b:'img_o'},'3':{a:'img_b',b:'img_p'},'4':'img_c','5':'img_d','6':'img_e'},offlie:{'2':'img_h','3':'img_i','4':'img_j','5':'img_k','6':'img_l'},__DEFAULT__:'img_a'};costoticeMap={b:{'3':'text3','5':'text5'},a:'textaaa',__DEFAULT__:'textdefault'};costisStrig=obj=>Object.prototype.toStrig.call(obj)==='[objectStrig]';atco(imgMap,['olie',3,'a'],isStrig);//'img_b'atco(imgMap,['olie',3,'c'],isStrig);//'img_a'atco(imgMap,['offlie',3,'v'],isStrig);//'img_i'atco(imgMap,['olie'],isStrig);//'img_a'atco(oticeMap,['b',1],isStrig);//'textdefault'atco(oticeMap,['a',6,1,5,6],isStrig);//'textaaa'

注意

atco(oticeMap,['b'],isStrig);//udefied

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

更多例子可直接参考mochatest

最后

希望大家用得开心。

Licese

MIT

功能介绍

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

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

评论