Scala 2.11 компилирует выражение match
в относительно плотном диапазоне Int
в lookupswitch
:
lookupswitch { // 21
-12: 200
-11: 200
-10: 184
-9: 190
-8: 190
-7: 190
-6: 190
-5: 190
-4: 200
-1: 200
2: 195
3: 195
4: 195
5: 195
6: 184
7: 184
12: 184
13: 184
18: 184
21: 184
25: 184
default: 180
}
В то время как Java 7 компилирует эквивалентный оператор switch
в tableswitch
:
tableswitch { // -12 to 25
-12: 168
-11: 168
-10: 177
-9: 174
-8: 174
-7: 174
-6: 174
-5: 174
-4: 168
-3: 185
-2: 185
-1: 168
0: 185
1: 185
2: 171
3: 171
4: 171
5: 171
6: 177
7: 177
8: 185
9: 185
10: 185
11: 185
12: 181
13: 181
14: 185
15: 185
16: 185
17: 185
18: 181
19: 185
20: 185
21: 181
22: 185
23: 185
24: 185
25: 181
default: 185
}
Есть ли способ заставить Scala генерировать a tableswitch
?