Rustをやってみる(match)

どうも、Masakiです。
enumについて説明したので今回は「enum」と、よく使われる組み合わせの「match」について紹介していきたいと思います。

matchについて

matchの基本的な書き方

一般的な言語にはswitch文があるのですが、rustにはswitch文はありません。その代わりとなるのが「match」文です。

・main.rsコード

enum Status{
    Idle,
    Walk,
    Stop,
    Run,
}

fn main() {
    let status = Status::Idle;
    match status{
    Status::Idle => println!("idle"),
    Status::Walk => println!("walk"),
    Status::Stop => println!("stop"),
    Status::Run => println!("run"),
    }
}

前回紹介したenum文を使ってみたやり方です。
「case 〇〇:」の部分が「=>」を使って書くことになります。
そして、ここでも一つrust特有の書き方があります。
enumを使った場合はそのenumに書かれた「Idle」~「Run」まですべてをmatch文の中に書かなければコンパイルエラーになります。またその他の場合だと以下のようになります。

その他のmatchの書き方。

・main.rsコード

fn main() {
        let x = 3;
        match x {
                1 => println!("1"),
                2 => println!("2"),
                3 => println!("3"),
                _ => println!("Dont Number"),
        }
}

注目するところは「_」です。「_」が1,2,3以外の値のときに実行される処理になります。「_」がないと、基本的にはコンパイルエラーになります。match文は一通りの条件を網羅しないとコンパイルを通してくれません。
ただ、今みたいに1,2,3というような条件式を書くのがめんどくさいので少し、簡単にかける方法を紹介します。

・main.rsコード

fn main() {
    let x = 3;
    match x {
    1 ... 3 => println!("{}",x),
    _ => println!("Dont Number"),
    }
}

 

このやり方でも先程と同じ処理の内容となりますxの値が「1~3」の値ならば、xの値が表示されます。

今回はmatch文の紹介となります。いかがだったでしょうか?
match文は色々なテクニックがありますので、また紹介できたらなと思います。今回はここまで!では………

タイトルとURLをコピーしました