私はCやC++のような言語に非常に精通しているプログラマですが、本質的に機能的なものはほとんど経験していません。私はRustを学びようとしており、Rustがパターンをどのように定義しているのか、match
式と一致するパターンがRustにあるのかを知りたいと思います。錆のパターンの定義とパターンマッチングは何ですか?
答えて
多くの種類のパターンがRustに存在します。最も注目すべきものは、
42
のようなリテラルです。これらは指定された値と一致します。したがって、を実行すると、f()
が返された場合42件が入力されます。x
などの識別子。これは何でも一致し、一致した値をx
に割り当てます。したがって、次のコードでは:match f() { 42 => println!("Correct!"), x => println!("{} is the wrong answer", x) }
"正解!"
f()
が42を返した場合は印刷されます。それ以外の場合は、入力された数値が "間違った答え"で印刷されます。ワイルドカードパターン
_
。識別子と同様に、これは何にもマッチしますが、識別子とは異なり、何も割り当てられません。あなたが一致した値を必要としない場合(上記の例で入力した番号を印刷したくないだろうと言う、そしてあなただけのX(pattern1, ..., patternN)
がAで、列挙型の任意の変形X(arg1, ..., argN)
について_ => println!("Wrong")
を書くことができ、これを使用します引数なしで有効なパターン及び任意の変異体
Y
ため、Y
が有効なパターンである変異体Y
と一致Y
パターン引数一致パターンpatternN
介してpattern1
場合、それぞれの変異体X
のインスタンスと一致X(pattern1, ..., patternN)
パターン、この例を考えてみてください。。。enum Foo { X(i32, i32), Y } fn g() -> Foo { ... } fn foo() { match g() { X(a,b) -> a+b Y -> 0 } }
g()
が返された場合、foo()はXの値の合計を返します。g()
がY
の場合は0を返します。
便利なリンク:[一致](https://doc.rust-lang.org/book/match.html)と[パターン](https://doc.rust-lang.org/book/patterns.html)in参考文献の本と[一致する式](https://doc.rust-lang.org/reference.html#match-expressions)を参照してください。その他の重要なパターンには、タプル、 "|"で結合されたパターン、範囲、 "@"で囲まれたサブパターンなどがあります。 Enumバリアントは、宣言された方法に応じて 'X'、' X(..) 'または' X {..} 'の構文を持つことができます。 –
- 1. 錆は:refパターン
- 2. 錆のシスターストとは何ですか?
- 3. 錆には#[警告(不安定)]とは何ですか?
- 4. 複数のタイプとの錆パターンのマッチング
- 5. パターンマッチング構文定義
- 6. 関数定義とクラス定義の違いは何ですか
- 7. 「ヌル定義マクロ」とは何ですか?
- 8. MVCパターンの「モデル」とは何ですか?
- 9. 「空の」パターンとは何ですか?
- 10. async.waterfallのasync.retryableパターンとは何ですか?
- 11. 錆(VSCode)エラー:spawnSync未定義ENOENT
- 12. /^ 1?$ /と/^1 $ /パターンマッチングの違いは何ですか?
- 13. PHPでPHP_ZTSの定義済み定数とは何ですか?
- 14. このアプリケーションファンクタの定義では、get()とunit()は何ですか?
- 15. Perl:テストの定義は何ですか?
- 16. 「ユーザーデータポインタ」の定義は何ですか?
- 17. SMLでは、パターンのエイリアスを定義できますか?
- 18. インタラクティブメソッドでre.compileのパターンを定義する
- 19. ビルド定義タスクファイルのパターン
- 20. 複合パターンの定義
- 21. フィルタのパターン定義が
- 22. Scalaのvarとvalの定義の違いは何ですか?
- 23. DAO工場パターンとは何ですか?
- 24. カーソルレス現像パターンとは何ですか
- 25. 複合パターンとは何ですか?
- 26. XcodeプリコンパイルヘッダのC++言語のプリプロセッサ定義とは何ですか?
- 27. CSSのフラッドカラーとライティングカラーの定義は何ですか?
- 28. GDBの「定義」とLLDBの同等物は何ですか?
- 29. パターンマッチングと設定値
- 30. パターンマッチングのbyte_sizeの構文は何ですか?
[書籍](https://doc.rust-lang.org/book/patterns.html)は –
本は私の後藤源だった、それがすべてで私のために計算していなかっただけと説明しています。私はそれを誤解していて、私の推理のためにはそれほど深くはない。 – TheRenegade
@TheRenegadeあなたは本の問題を開くべきです。あなたがそれを理解しておらず、何が間違っているのか説明できれば、本自体は改善され、**みんなは利益を得ることができます**。 – Shepmaster