在这样的示例中,是否有更好/更好的方法来重构所有条件语句?
if (memberStatus == bronze || memberStatus == silver || memberStatus == gold) {
return 1;
}
return 0;
答案 0 :(得分:4)
实现这一目标的典型方法:
switch (memberStatus) {
case bronze:
case silver:
case gold:
// Your code here.
break; // Don't forget this or it'll "chain through" into the next section
default:
// If none of those matched.
}
如果您只是强制使用return 1
,则不需要break
,则可以返回。除非用switch
或break
明确中止,否则return
将链接到下一部分。
答案 1 :(得分:1)
return memberStatus == bronze || memberStatus == silver || memberStatus == gold;
是显而易见的方法。
尽管你有类似的东西
int metal = bronze | silver | gold;
bronze
,silver
和gold
具有互斥的1位,一旦进行任何数字转换(以及其他可能性),则可以编写
return memberStatus & metal;
实际上,metal
将是enum
的一部分,其中也包含其他值;我在这里使用int
来允许编译器为我提供适当的类型,如果以上只是缩小转换范围,则可能不是这种情况;为了强调您希望bronze
,silver
和gold
是同一enum
的一部分,或者如果不是,则使用相同的类型。