百名山 API を開発しました | mountix APICLICK !

Rust | 三項演算子は if で表現する

Rustの三項演算子はif文で表現する
  • URLをコピーしました!

Rust でJavaScript みたいな三項演算子の記法があるか調べてみました。

Rust の三項演算子は if で表現する

  1. Rust には?:で表現する三項演算子は存在しない
  2. if文を三項演算子のように使用する
  3. matchでそれっぽいことができる?
目次

Rust の三項演算子は if で表現する

偶数と奇数を判定するようなプログラムを書いてみます。

JavaScript の三項演算子

?:を使った三項演算子で書くことができます。

条件 ? 条件が真値のとき評価される式 : 条件が偽値のときに評価される式です。

for (i = 1; i <= 10; i++) {
    let result = i % 3 == 0 ? "even number" : "odd number";
    console.log(`${i}: ${result}`);
}

[...Array(10)].forEach((_, i) => {
    let num = i + 1;
	  let result = num % 2 == 0 ? "even number" : "odd number";
    console.log(`${num}: ${result}`);
});

Rust は if で表現する

Rust ではif文を三項演算子のように使用することができます。

fn main() {
    for num in 1..=10 {
        // 三項式
        let result = if num % 2 == 0 { "even number" } else { "odd number" };
        println!("{}: {}", num, result);
    }
}

また、三項演算子ではないが、matchも値を返すことができるため、以下のような書き方もできる。

単一の式で値を返す場合、中括弧は省略可能です。

fn main() {
    for num in 1..=10 {
        let result = match num % 2 {
            0 => "even number",
            _ => "odd number",
        };
        println!("{}: {}", num, result);
    }
}

まとめ

「三項演算子はありません。if でやってね。」ということのようです。

Rust っぽいと言えば、Rust っぽい意見ですね。

Goも三項演算子の記法はないみたいだし、可読性が落ちるというのが意見としては強いのかな?

参考

著:初田直也, 著:山口聖弘, 著:吉川哲史, 著:豊田優貴, 著:松本健太郎, 著:原将己, 著:中村謙弘, 著:フォルシア株式会社
¥1,782 (2022/10/05 16:03時点 | Amazon調べ)
Rustの三項演算子はif文で表現する

この記事が気に入ったら
フォローしてね!

  • URLをコピーしました!

コメント

コメントする

目次