🧣

Rust 基本文法 -条件分岐-

2023/11/28に公開

はじめに

Rust の基本文法の第2回目の記事になります。
前回の記事では変数、定数の宣言を実践してみましたが、
今回は条件分岐にフォーカスした記事を書いていきます。

https://zenn.dev/collabostyle/articles/efbe2a89cf7c10

条件分岐、繰り返し処理等はどんなプログラミング言語でも共通して使われる技術ですね。
Rust を学ぶ上でも必ず押さえておきたい部分になりそうです。

今回も以下の Rust Playground を使って実践していきます。
皆さんもぜひ、一緒に手を動かして学んでいきましょう!
https://play.rust-lang.org/

条件分岐

条件分岐は ifswitch等で表現されることが多いですが、Rust ではどのような条件分岐を行うことができるのでしょうか。
基本的な条件分岐の種類と、基本的な記法はマスターしたいところですので、
それらをご紹介していきます。

if 文

Rust の if 文は以下のように記述します。

fn main() {
    let num = 10;
    if 0 < num {
        println!("{} は 0 より大きいです。", num)
    }
}

実行してみると...

10 は 0 より大きいです。

num変数に対して 10 を代入し、その下で if 文を記述しています。
この場合だと num0 より大きい数字ですので、println!が実行されます。

else if 文、else

続いて、else if の場合を試していきます。
if 文の条件を少し変え、その下に else if を追加します。

fn main() {
    let num = 10;
    if num < 10 {
        println!("{} は 0 より大きいです。", num)
    } else if 10 == num {
        println!("{} と 10 は等しいです。", num)
    }
}

実行してみると...

10 と 10 は等しいです。

期待した通り、else if の条件に一致し、println!が実行されました。
この流れのまま、変数 num の値を修正し、else 条件を追加してみましょう。

fn main() {
    let num = 20;
    if num < 10 {
        println!("{} は 0 より大きいです。", num)
    } else if 10 == num {
        println!("{} と 10 は等しいです。", num)
    } else {
        println!("{} は 10より大きい数字です。", num)
    }
}

実行してみると...

20 は 10より大きい数字です。

ちょっと強引ではありますが、変数 num の値を 20 として else 条件に当てはまり、
期待通りのprintln!を呼び出すことができました。

※ネストが深くなることに加え、可読性が落ちてしまうので else 連発には注意したいところです。

match 文

Rust において、if 文のほかに matchなるものがあるようで、
他の言語でよく見かける switch はないようです。

それでは、実際に match 文を書いてみます。

fn main() {
    let num = 20;
    match num {
        20 => println!("数字は {} です。", num),
        _ => println!("その他の数字です。"),
    }
}

実行してみると...

数字は 20 です。

このように match numとすることで {}以下のパターンにマッチするプログラムを実行してくれます。

Rust における match は取り得るすべてのパターンを網羅しておく必要があります。
そのため、↑の例のように _ => println!("その他の数字です。"),という条件を加えて対処しています。
_がワイルドカードの役割を担ってくれるので、必要となった場合は追加しておきましょう。

さらにコードを修正し、以下のように変更してみます。

fn main() {
    let num = 20;
    match num {
        10..=20 => println!("{} は 10 ~ 20 までの数字です。", num),
        _ => println!("その他の数字です。"),
    }
}

実行してみると...

20は 10 ~ 20 までの数字です。

こんな感じで出力されました。
これは、10..=20(10 ~ 20)にマッチする値であれば実行されるようになります。
ちょっと見慣れない書き方だなと思いましたが、押さえておきたいですね。

おわりに

Rustの条件分岐の種類と記法についてやっていきました。
基本となるのは ifmatchとなるようで、ほかにも if letwhile for等を使って条件分岐を加える方法があるようです。
(番外編?として別で記事を書きたいかも。)

では。

コラボスタイル Developers

Discussion