如何将指定的条件判断if语句改写为单个嵌套switch语句
把连续if转成嵌套switch的实现方案
嘿,这个需求我明白啦——就是要把那两个连续的条件判断改成嵌套的switch语句对吧?先帮你理清楚原代码的逻辑:
- 第一步:如果
value小于2500,就按1.5%的比例计算paystackFees - 第二步:不管第一步有没有执行,都要确保
paystackFees不会超过2000的上限
下面是改成嵌套switch的写法,这里用到了switch(true)的小技巧(让switch基于布尔条件匹配):
let paystackFees = 0; // 先初始化手续费变量 // 外层switch处理value的判断 switch (true) { case value < 2500: paystackFees = value * 0.015; // 嵌套switch处理手续费上限判断 switch (true) { case paystackFees > 2000: paystackFees = 2000; break; // 不满足上限条件时,保持计算出的手续费即可,无需额外操作 } break; default: // 原代码未定义value >=2500时的手续费规则,这里默认保留初始值 // 同样要检查上限(如果后续有其他计算逻辑的话) switch (true) { case paystackFees > 2000: paystackFees = 2000; break; } }
补充说明
其实说实话,原逻辑用if语句会更直观易懂,switch在这里有点“为了满足语法要求而用”的味道,但上面的写法完全符合你要的单个嵌套switch的要求。另外如果value >=2500时有其他手续费计算规则,直接在default分支里补充就行~
内容的提问来源于stack exchange,提问作者Micky
相关产品推荐
相关产品推荐

