无论使用哪种编程语言,有哪些选项可以缩短具有许多类似情况的长 switch 语句?
根据我的搜索,我找到了类似 this one 的答案但我的情况各不相同,只有一个整数在循环中变化。
我经常在 bash/PHP/Python/JavaScript 中使用以下 switch 语句构造,我正在寻找更短的版本:
switch ($device) {
// 2ghz
case "n2":
return 1;
break;
case "nne2":
return 2;
break;
case "ne2":
return 3;
break;
case "ene2":
return 4;
break;
case "e2":
return 5;
break;
case "ese2":
return 6;
break;
case "se2":
return 7;
break;
case "sse2":
return 8;
break;
case "s2":
return 9;
break;
case "ssw2":
return 10;
break;
case "sw2":
return 11;
break;
case "wsw2":
return 12;
break;
case "w2":
return 13;
break;
case "wnw2":
return 14;
break;
case "nw2":
return 15;
break;
case "nnw2":
return 16;
break;
// 5ghz
case "n5":
return 17;
break;
case "nne5":
return 18;
break;
case "ne5":
return 19;
break;
case "ene5":
return 20;
break;
case "e5":
return 21;
break;
case "ese5":
return 22;
break;
case "se5":
return 23;
break;
case "sse5":
return 24;
break;
case "s5":
return 25;
break;
case "ssw5":
return 26;
break;
case "sw5":
return 27;
break;
case "wsw5":
return 28;
break;
case "w5":
return 29;
break;
case "wnw5":
return 30;
break;
case "nw5":
return 31;
break;
case "nnw5":
return 32;
break;
// 24ghz
case "n24":
return 33;
break;
case "nne24":
return 34;
break;
case "ne24":
return 35;
break;
case "ene24":
return 36;
break;
case "e24":
return 37;
break;
case "ese24":
return 38;
break;
case "se24":
return 39;
break;
case "sse24":
return 40;
break;
case "s24":
return 41;
break;
case "ssw24":
return 42;
break;
case "sw24":
return 43;
break;
case "wsw24":
return 44;
break;
case "w24":
return 45;
break;
case "wnw24":
return 46;
break;
case "nw24":
return 47;
break;
case "nnw24":
return 48;
break;
default:
return 0;
break;
}
请您参考如下方法:
在 Python 中你可以使用像这样简单的东西,如果你的返回值很简单的话:
items = ["n2","nne2","ne2","ene2", ...]
for idx, key in enumerate(items, start=1):
if device == key:
result = idx
result = 0
或者如果您希望返回值更复杂:
my_dict = {
"n2": 1,
"nne2": 2,
"ne2": 3,
"ene2": 4,
...}
for key, value in my_dict.items():
if device == key:
result = value
result = 0
