如何通过用case语句替换if-then-else优化算法及改写伪代码?
用Case语句替代嵌套If-Then-Else伪代码的修改方案
原伪代码逻辑
原代码是多层嵌套的If判断,核心逻辑如下:
If f_op is v_op then If o_op == f_op then If (o_r_type == "C" AND f_r_type == "D") OR (o_r_type == "D" AND f_r_type == "C") OR (o_r_type == "C" AND f_r_type == "C") then do nothing else if o_r_type == "D" AND f_r_type == "D" then v_b.add(i) else if o_op_cat == f_op_cat then v_b.add(i)
修改后的Case版本
我们可以把嵌套条件拆解为多维度的Case匹配,让逻辑更清晰且无需遍历所有条件:
Case f_op of v_op: // 组合o_op匹配状态、o_r_type、f_r_type作为判断条件 Case (o_op == f_op, o_r_type, f_r_type) of (True, "C", "D"), (True, "D", "C"), (True, "C", "C"): do nothing (True, "D", "D"): v_b.add(i) (False, *, *): // *表示任意值,匹配o_op不等于f_op的所有情况 If o_op_cat == f_op_cat then v_b.add(i) End Case default: // 处理f_op不等于v_op的情况,原代码未涉及,保持空操作 do nothing End Case
修改思路
- 外层Case直接锁定
f_op等于v_op的场景,其他情况直接跳过,不用做无效判断 - 内层用多条件组合匹配的Case,把
o_op是否和f_op相等、o_r_type、f_r_type三个条件打包,直接命中预设分支:- 碰到那三种不需要操作的类型组合,直接啥也不干
- 碰到
D&D组合时,执行添加操作 - 当
o_op不等于f_op时,再检查分类是否匹配,符合就执行添加
- 这种写法摆脱了多层嵌套的If,逻辑一目了然,而且Case会直接跳转到对应分支,不用挨个遍历条件,效率更高
内容的提问来源于stack exchange,提问作者husin alhaj ahmade
相关产品推荐
相关产品推荐

