どうも、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文は色々なテクニックがありますので、また紹介できたらなと思います。今回はここまで!では………