我试图使冗长的if-语句更加简洁;这就是它的原创性:
char x;
if(list.size()== 1){
x = 'a';
}
if(list.size()== 2){
x = 'b';
}
if(list.size() == 3){
x = 'c';
}
if(list.size() == 4){
x= 'd';
}有可能压缩这段代码吗?
已经谢谢了,Jari Van M
发布于 2015-07-03 10:29:51
作为第一步,我们将代码重构为if-else级联,并备份我们将要经常使用的列表大小:
1:
int size = list.size();
char x;
if(size == 1) {
x = 'a';
} else if(size == 2) {
x = 'b';
} else if(size == 3) {
x = 'c';
} else if(size == 4) {
x = 'd';
} else {
//undefined
x = '\0';
}由于我们仅在本例中将列表大小与常量进行比较,因此可以进一步将其转换为switch语句:
2:
char x;
switch (list.size()) {
case 1: x = 'a'; break;
case 2: x = 'b'; break;
case 3: x = 'c'; break;
case 4: x = 'd'; break;
//undefined
default: x = '\0'; break;
}假设这不是随机选择的示例,而是真正的代码,我们看到需要一个从1开始的函数,该函数输出具有递增值的字母表('a'到'z'):
3:
char x;
if(list.isEmpty()) {
//undefined
x = '\0';
} else {
//our function
x = (char) ('a' + list.size() - 1);
if(x > 'z') {
//undefined
x = '\0';
}
}发布于 2015-07-03 10:10:11
更简单的选项:使用switch case。
魔方选项:
char x = (char) ('a' + list.size() - 1);发布于 2015-07-03 10:10:31
基本上是将大小映射到字符。可以更容易做到:
x = 'a' + list.size() - 1;https://stackoverflow.com/questions/31204092
复制相似问题