🥒
Guard clause のガード句 whenキーワード
これは何か?
Dart3からなのか、switchとif caseにwhenキーワードなるものがついたらしい?
ガード条項:
case 句の後にオプションのガード句を設定するには、キーワード when を使用します。 if case および switch ステートメントと式の両方にガード句を続けることができます。
// Switch statement:
switch (something) {
case somePattern when some || boolean || expression:
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Guard clause.
body;
}
// Switch expression:
var value = switch (something) {
somePattern when some || boolean || expression => body,
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Guard clause.
}
// If-case statement:
if (something case somePattern when some || boolean || expression) {
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Guard clause.
body;
}
早速使ってみる
Lintの警告が出てくるので、ignore
をつけた。なぜ出てくるのだろう?
||
はor演算子で、1か3だったら条件は正しいよってプログラムです。それに、ガード句whenを使うと条件を追加できる。
void main() {
int val = 0;
switch(val) {
// ガード句whenを使うと、caseの条件に加えて、さらに条件を追加できる。値が1 or 3でval が int だったら、'1 or 3'を出力する
// ignore: unnecessary_type_check
case 1 || 3 when val is int:
print('1 or 3');
// ignore: unnecessary_type_check
case 2 || 4 when val is int:
print('2 or 4');
default:
print('パターンにマッチしませんでした');
}
}
実行結果:
1 or 3
Exited.
感想
以前Qiitaの記事を書いたときに、switch case whenなるものをカウンターで紹介してきた人がいて、whenなんてないな〜と調べていたら、あったので試しに使ってみましたところ、条件分岐を追加する処理だったようです。
Discussion