主な違いまとめ
- すべての型に対応
- Dartはbreak;がなくてもcaseを抜ける
- パターンマッチ対応
- nullに対応
Dartは break;
がなくても case
を抜ける
Javaではbreak;
がないとその後に続くcase
も逐次実行していたが(フォールスルー)
Dartではcase
ごとに処理を終了する。
String color = "red";
switch (color) {
case "red":
System.out.println("赤です");
case "blue":
System.out.println("青です");
break;
default:
System.out.println("その他の色");
}
赤です
青です
String color = 'red';
switch (color) {
case 'red':
print('赤です');
case 'blue':
print('青です');
default:
print('その他の色');
}
赤です
パターンマッチ対応
Javaでも17〜21で一部対応しているらしいが
型チェックが可能
またwhenで分岐が可能
Object value = 42;
switch (value) {
case int n when n.isEven:
print('偶数: $n');
case int n:
print('奇数: $n');
case String s:
print('文字列: $s');
default:
print('不明な型');
}
偶数: 42
nullに対応
Javaだとヌルポを投げていたが
Dartだとcase nullで対応可能
String? color = null;
switch (color) {
case 'red':
print('赤です');
case null:
print('null です');
default:
print('その他の色');
}
null です
おわりに
Javaで感じていた不便な部分や、直感的でない部分などがDartでは修正されていて驚きました。
また内容等に不出来がありましたらコメントください。