java - 如何删除 Java 中的重复条件检查?
问题描述
var Task= Condition1
? (CommonCondition ? doThis1 : doThis2)
: Condition2? (CommonCondition ? doThis3 : doThis4 )
: (CommonCondition ? doThis5 : doThis6);
如何避免重复检查CommonCondition
上述语句中的值?
解决方案
- 检查条件的顺序可以更改,以便
CommonCondition
检查一次,但其他条件必须在每个分支中检查两次:
var Task= CommonCondition
? (Condition1 ? doThis1 : Condition2 : doThis3 : doThis5)
: (Condition1 ? doThis2 : Condition2 : doThis4 : doThis6);
- 实现一个二维数组
Task
或可能Supplier<Task>
用于CommonCondition
定义行索引,以及定义列索引的其他条件:
Task[][] arr = {
{doThis1, doThis3, doThis5},
{doThis2, doThis4, doThis6}
};
int row = CommonCondition ? 0 : 1;
int col = Condition1 ? 0 : Condition2 ? 1 : 2;
var Task = arr[row][col];
- 类似地,可以使用一个简单的 s 数组
Task
,那么应该使用条件来计算索引:
Task[] arr = { doThis1, doThis2, doThis3, doThis4, doThis5, doThis6 };
int i = Condition1 ? 0 : Condition2 ? 1 : 2;
int j = CommonCondition ? 0 : 1;
var Task = arr[2 * i + j];
推荐阅读
- javascript - 如何模拟 ajax 响应
- amazon-web-services - Jenkins 重置 AWS 密码的作业
- python - 组合按列中的值分组的 2d numpy 数组
- c# - 具有设置间隔或 SignalR 的 Ajax
- spring - 如何将字符串 [] 从 Thymeleaf 多选表单发送到控制器
- php - Laravel 循环中的查询范围
- amazon-web-services - EC2 安全组入站规则未按预期工作
- elasticsearch - 如何更改 Elasticsearch 网络主机
- jquery - Jquery如果勾选了复选框然后隐藏父li
- javascript - jQuery表单提交方法不起作用