Zig 入門 #9 - Switch
2022-05-12 / Zig, Programming
ziglearn.org を参考に Zig
の基本を一通りさらってみます。今回は Chapter 1 - Basics | ziglearn.org からSwitch
について。
Switch
参考: Switch
switch の使い方は以下のようになります。
const a: i8 = 5;
switch (a) {
0...4 => std.log.info("4以下", .{}),
5,6 => std.log.info("5か6", .{})
else => std.log.info("else", .{}),
}
const b = switch (a) {
0 => 0,
1 => 1,
else => a * 2,
};
- Zig の switch は
fall through
しません - 値を返すことができます
...
は値の範囲を表します- 両端の値は含まれます
- 複数の値を同じ分岐で扱いたい場合には
,
で区切り複数記述します else
を使用すると他のどの条件も満たさなかった場合の分岐になりますelse
が無くすべての条件を満たせない場合にはコンパイルエラーになるようです
今回確認したコードは以下の通りです。
const a: i8 = 5;
switch (a) {
// ... は Range を表す。両端の値は含まれる。0 以上 5 以下
0...5 => std.log.info("0 以上 5 以下", .{}),
}
// 以下は 5 の場合の処理がないのでコンパイルエラーになる
// switch (a) {
// 0...4 => std.log.info("5未満", .{})
// }
switch (a) {
// 分岐の区切りは ,
0...4 => std.log.info("5未満", .{}),
else => std.log.info("else", .{}), // <- 最後の分岐のコンマも許容される、なくてもよい
}
// 式にもなる
const b = switch (a) {
0 => 0,
1 => 1,
else => a * 2,
};
std.log.info("b: {}", .{b});