Switch Caseの基本的な使い方
Dart(Flutterの基盤となる言語)では、switch
とcase
を使って、特定の値に基づいて異なるアクションを実行することができます。以下に基本的な使い方を示します。
void main() {
var value = 'B';
switch (value) {
case 'A':
print('Value is A');
break;
case 'B':
print('Value is B');
break;
default:
print('Unknown value');
}
}
このコードでは、value
の値に応じて異なるメッセージを出力します。value
が'A'
の場合、'Value is A'
を出力し、'B'
の場合は'Value is B'
を出力します。どのcase
にも該当しない場合は、default
のブロックが実行され、'Unknown value'
が出力されます。
break
キーワードは、それぞれのcase
ブロックの最後に配置します。これは、一致したcase
のコードブロックが実行された後、switch
文から抜け出すためのものです。もしbreak
を忘れてしまうと、Dartはエラーを出力します。
以上が、DartとFlutterでのswitch
とcase
の基本的な使い方です。次のセクションでは、複数の値を同じcase
に割り当てる方法について説明します。
複数の値を同じCaseにする方法
Dartでは、複数の値を同じcase
に割り当てることは直接的にはサポートされていません。しかし、同じアクションを複数の値で実行したい場合は、fall-through
というテクニックを使用することができます。
fall-through
は、case
ブロックの最後にbreak
を書かないことで、次のcase
ブロックを実行するというものです。これにより、複数の値を同じcase
に割り当てることができます。
以下に、その例を示します。
void main() {
var value = 'B';
switch (value) {
case 'A':
case 'B':
print('Value is A or B');
break;
default:
print('Unknown value');
}
}
このコードでは、value
が'A'
または'B'
の場合、'Value is A or B'
を出力します。どのcase
にも該当しない場合は、default
のブロックが実行され、'Unknown value'
が出力されます。
ただし、このfall-through
のテクニックは注意が必要です。break
を忘れると、意図しないcase
ブロックが実行される可能性があります。そのため、このテクニックは、明示的に複数の値を同じアクションに割り当てたい場合にのみ使用することをお勧めします。
以上が、DartとFlutterでの複数の値を同じcase
に割り当てる方法です。次のセクションでは、Dartでのswitch
とcase
の特性について説明します。
DartでのSwitch Caseの特性
Dartのswitch
とcase
には、他の言語とは異なるいくつかの特性があります。以下にその主な特性を示します。
-
厳密な比較: Dartの
switch
文は、case
の値と厳密に一致するものを探します。これは、JavaScriptのような言語で見られる型変換を伴う比較(==
)とは異なります。Dartでは、===
に相当する厳密な比較が行われます。 -
列挙型(enum)のサポート: Dartでは、
switch
文で列挙型を使用することができます。これにより、限定的な値の集合を効率的に処理することができます。 -
コンパイル時の警告: Dartでは、
switch
文が列挙型を判断する場合、すべてのcase
を網羅していないとコンパイル時に警告が出ます。これにより、新たな値が追加されたときに漏れを防ぐことができます。 -
break
の必須性: Dartでは、各case
ブロックの最後にbreak
を書くことが必須です。これがないと、次のcase
ブロックに「フォールスルー」してしまいます。ただし、意図的にfall-through
を利用することも可能です。
以上が、DartとFlutterでのswitch
とcase
の主な特性です。次のセクションでは、具体的なコード例とその解説を行います。
具体的なコード例とその解説
以下に、DartとFlutterでのswitch
とcase
の使用例を示します。この例では、fall-through
を使用して複数の値を同じcase
に割り当てています。
enum Fruit {
apple,
banana,
orange,
pineapple,
}
void main() {
var fruit = Fruit.banana;
switch (fruit) {
case Fruit.apple:
case Fruit.banana:
print('Apple or Banana');
break;
case Fruit.orange:
print('Orange');
break;
case Fruit.pineapple:
print('Pineapple');
break;
default:
print('Unknown fruit');
}
}
このコードでは、Fruit
という列挙型を定義し、それをswitch
文で判断しています。fruit
がFruit.apple
またはFruit.banana
の場合、'Apple or Banana'
を出力します。Fruit.orange
の場合は'Orange'
を出力し、Fruit.pineapple
の場合は'Pineapple'
を出力します。どのcase
にも該当しない場合は、default
のブロックが実行され、'Unknown fruit'
が出力されます。
このように、DartとFlutterでは、switch
とcase
を使って、特定の値に基づいて異なるアクションを実行することができます。また、fall-through
を利用することで、複数の値を同じcase
に割り当てることも可能です。
以上が、DartとFlutterでのswitch
とcase
の具体的なコード例とその解説です。これらの知識を活用して、より効率的なコードを書くことができます。次のセクションでは、さらに詳細な使用例や応用例を紹介します。