[Rust学習] 条件分岐 (if, match)

2024年3月30日

Rust プログラミング 学習

eyecatch プログラミング言語の基礎である反復と条件分岐をマスターすれば、その言語ではだいたいやりたいことが出来るようになります。 今回はRust言語の条件分岐をやっつけたいと思います。

ノーマルサンプルコード

if_else.rs : if ~ else

fn main(){ let n = 5; if n < 10{ println!("under 10"); } else{ println!("over 10"); } } 実行結果 $ rustc if_else.rs $./if_else > under 10

if ~ elseif ~ else

fn main(){ let n = 15; if n < 10{ println!("under 10"); } else if n < 20{ println!("under 20"); } else{ println!("over 10"); } } 実行結果 $ rustc if_elseif_else.rs $./if_elseif_else > under 10

文字列判定

str.rs : 文字列の一致

fn main(){ let str = "hoge"; if str == "hoge"{ println!("It's hoge."); } else{ println!("It's not hoge."); } }

contain.rs : 文字列を含む判定

fn main(){ let str = "Is that a hoge ?"; if str.contains("hoge"){ println!("Include hoge."); } else{ println!("Exclude hoge."); } } 実行結果 $ rustc contain.rs $./contain > Include hoge.

パターンマッチ

Rustには、他のプログラム言語にあるswitchの代わりにmatchという命令が用意されています。 matchフロー制御演算子というらしく、次のように使います。

match.rs

fn main(){ let n = 3; match n { 0 => println!("match 0"), 1 => println!("match 1"), 2 => println!("match 2"), _ => println!("other"), } } 実行結果 $ rustc match.rs $./match > other switchと似たような構造なのですが、defaultに当たる添字が"_"(アンダースコア)になっているのと、いちいちbreakしなくていいのは、書きやすいですね。

match_some.rs : 範囲マッチ

fn main(){ let n = Some(9); match n { Some(i) => println!("match {}" , i), None => println!("other"), } } Someが何かというのは、後の型のところでやるとして、matchには、Some,Noneという書き方があると覚えておくと便利そうです。

あとがき

Rust言語の条件分岐には、if letという、独特なものがあるが、今回はこれは割愛した。 ネットで検索してみたところ、まともに解説できているサイトがほぼ無かったので、もう少しRustの熟知が必要と判断して、後ほど自分で解析しようと思います。 とりあえず、簡単な条件分岐ができるようになったら、あとは実践あるのみですね。

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。