2017-02-14 10 views
-3

match節に基づいて変数の値を割り当てるために使用されるRustのイディオムがありますか?私はスカラからのRust match文からの割り当て

のようなものを知っていて、あなたがRustで同じことをすることができるかどうか疑問に思っていました。式として一致句を評価し、そこから何かを返す方法はありますか、あるいはそれは単に錆の文ですか?

+0

をストレート[錆帳:4.14マッチ]から(HTTPS://doc.rust-lang。 org/beta/book/match.html)(2番目の例)。私はあなたが本を読んで(または少なくともあなたが質問があるときにそれをチェックする)ことをお勧めします。 –

+0

tbh私はこの概念を尊敬しますが、この本はほとんど役に立ちません(私は実際にチェックしましたが、割り当ての例はないパターンマッチングセクションをチェックしました)。この本は検索するのが非常に難しく、キーワード索引が欠けています。最初の句の後にコロンを忘れてしまったので、私はコンパイラから完全に無関係なエラーメッセージが出てきたので尋ねました.Googleは有用な情報を返しませんでした。 – midor

答えて

2

Rustでは、ほぼすべてのステートメントも式です。

あなたはこれを行うことができます:

fn main() { 
    let a = 3; 
    let b = match a { 
     x if x % 2 == 1 => false, 
     _ => true, 
    }; 
} 

Playground

+0

ええ、ありがとう、ちょうどそれを考え出した。 "case"節の最後にカンマを忘れてしまった。私はできるだけ受け入れます。 – midor

1

あることを確認:

fn main() { 
    let a = 1; 

    let b = match a % 2 { 
     1 => false, 
     _ => true 
    }; 

    assert_eq!(b, false); 
} 

関連錆リファレンスの章:match expressionsを。

ものの、あなたのケースで簡単なifは十分であろう:

let b = if a % 2 == 1 { false } else { true }; 

あるいは

let b = a % 2 != 1;