Rust 数値で分岐する match, ..=, |
概要
- 数値で分岐するには match を使う。
- 数値の範囲で処理を分けたい場合は「..=」を使う。
- いくつかの数値の場合に対応する場合は「|」を使う。
プログラム例
- 文字列の入力を要求する。
- 0~59 なら「不合格」を表示する。
- 60~99 なら「合格」を表示する。
- 100 なら「満点」を表示する。
- それ以外なら「範囲外」を表示する。
use std::io::*; fn main() { let 入力 = コンソール入力(); let 数値 = 入力.parse::<i32>().unwrap(); // 変換エラー対策は省略 let 出力 = match 数値 { 0..=59 => "不合格", 60..=99 => "合格", 100 => "満点", _ => "範囲外" }; println!("{}", 出力); } fn コンソール入力() -> String { let mut バッファ = String::new(); stdin().read_line(&mut バッファ).unwrap(); バッファ.trim().to_string() }
解説
- 「0..=100」は、0から100まで(100を含む)の範囲を表す。
プログラム例2
- 文字列の入力を要求する。
- 1, 3, 5, 7, 8, 10, 12 なら「31日」を表示する。
- 4, 6, 9, 11 なら「30日」を表示する。
- 2 なら「28日」を表示する。
- それ以外なら「範囲外」を表示する。
use std::io::*; fn main() { let 入力 = コンソール入力(); let 数値 = 入力.parse::<i32>().unwrap(); // 変換エラー対策は省略 let 出力 = match 数値 { 1 | 3 | 5 | 7 | 8 | 10 | 12 => "31日", 4 | 6 | 9 | 11 => "30日", 2 => "28日", _ => "範囲外" }; println!("{}", 出力); } fn コンソール入力() -> String { let mut バッファ = String::new(); stdin().read_line(&mut バッファ).unwrap(); バッファ.trim().to_string() }