switch 文

特定の値と一致するかを判断することで実行する文を選択します。


taiseiue | 2023-08-10

定義

名前空間: Alice
アセンブリ: Losetta.Runtime.dll
ソースコード: Alice.Core.Flow.cs

特定の値と一致するかを判断することで実行する文を選択します。

AliceScript
namespace Alice;
public variable switch(variable value)
{
    //...
}
引数
value 一致を判断する値。
戻り値
variable 実行した文の戻り値。

対応
AliceScript RC1、RC2、GM、2.0、2.1、2.2、2.3、3.0、4
AliceSister GM、2.0、2.1、2.2、2.3、3.0、4
Losetta 0.8、0.9、0.10、0.11

基本

switch文は、特定の値と一致するかを判断することで実行する文を実行します。

次の例では、0から2までの値が入力された場合、それを漢字に変換し、それ以外の場合は不明として表示します。

AliceScript
var input = 0;

switch(input)
{
    case 0:
    {
        print("零");
        break;
    }
    case 1:
    {
        print("一");
        break;
    }
    case 2:
    {
        print("二");
        break;
    }
    default:
    {
        print("不明");
        break;
    }
}

switch文では、caseが一致する最初のセクションを実行後、breakまたはreturnステートメントを使ってswitch文を終了する必要があります。 よって、次の例では、0-20-3は表示されません。

AliceScript
var input = 0;

switch(input)
{
    case 0:
    {
        print("0-1");
        break;
    }
    case 0:
    {
        print("0-2");
        break;
    }
    default:
    {
        print("0-3");
        return;
    }
}

ただし、コード中に#fall_through enableを記述し、case文をbreakで抜けない場合フォールスルーが起こり、一致箇所より下のコードがすべて実行されます。このため、次の例では、1-11-21-3のすべてが表示されます。

AliceScript
#fall_through enable

var input = 0;

switch(input)
{
    case 0:
    {
        print("1-1");
        break;
    }
    case 0:
    {
        print("1-2");
        break;
    }
    default:
    {
        print("1-3");
        return;
    }
}

case

特定の値が、valueと位置するときに本文を実行します。これは、switch文中で使用されます。

AliceScript
namespace Alice;
.command void case(variable value);
引数
value 一致を判断する値。

valueは、評価時にswitch文で指定された値と等価だと評価される必要があります。

default

特定の値が、他のどのcaseとも一致しない場合に本文を実行します。これは、switch文中で使用されます。

AliceScript
namespace Alice;
.command void default();

switch文中で、他のどのcaseとも一致せず、かつdefaultケースもない場合は、なにも実行されません。