◆ Java
今回はswitch文の新たな書式について。
★ アロー演算子
Javaには、「ラムダ式」というものが登場し、その時に「アロー演算子」が登場したようです。
「ラムダ式」では以下のように記載します。
この「->」を「アロー演算子」と呼ぶようです。
★ switch文で「->」(アロー演算子) を使う : Java SE 12〜?
もともとの
var month = 1;
switch (month) {
case 12:
case 1:
case 2:
System.out.println(month + ": winter");
break;
case 3:
case 4:
case 5:
System.out.println(month + ": spring");
break;
case 6:
case 7:
case 8:
System.out.println(month + ": summer");
break;
case 9:
case 10:
case 11:
System.out.println(month + ": autumn");
break;
default:
System.out.println(month + ": error!");
}
break文で区切らないと、次のcase文の処理も突入するなどもありますし、分岐が多くなるとコード行数も増えて、ちょっと見づらい感はあります。
ただ、上記のような構文でVSCode上で書くと、Convertできますよというメッセージが出ていたので、
実際にコンバートしてみると…
var month = 1;
switch (month) {
case 12, 1, 2 -> System.out.println(month + ": winter");
case 3, 4, 5 -> System.out.println(month + ": spring");
case 6, 7, 8 -> System.out.println(month + ": summer");
case 9, 10, 11 -> System.out.println(month + ": autumn");
default -> System.out.println(month + ": error!");
}
すごく見やすくなりました。
「case」句の条件も、複数を併記形式でまとめて記載できて、それをアロー演算子を使って、処理をそのまま書けるので、可読性もいいですね。
また、switch文からswitch式になったことで、戻り値を返せるようになります。
なので、以下のように書き換えることも可能なようです。
var month2 = 4;
System.out.println(switch (month2) {
case 12, 1, 2 -> month2 + ": winter";
case 3, 4, 5 -> month2 + ": spring";
case 6, 7, 8 -> month2 + ": summer";
case 9, 10, 11 -> month2 + ": autumn";
default -> month2 + ": error!";
});
前のものと上の書き換え後のものを並べて実行してみると…
---------------------------------
1: winter
---------------------------------
4: spring
---------------------------------
1: winter
---------------------------------
4: spring
---------------------------------
きちんと標準出力ができています。
これはうまく使うことで色々とできそうです。
Javaも昔に比べると色々と改良されていますね。