コードを読んでいる Ocaml プロジェクトのさまざまな場所で、次の構成要素に遭遇しました。
match something with
true -> foo
| false -> bar
一見すると、通常のif
ステートメントのように機能します。一見すると、それは.. 通常のif
ステートメントのように機能します。ぱっと見、SOさんにお願いすることにしました。if
この構文には特別な意味がありますか、それとも特定の場合に重要なステートメントとの微妙な違いがありますか?
コードを読んでいる Ocaml プロジェクトのさまざまな場所で、次の構成要素に遭遇しました。
match something with
true -> foo
| false -> bar
一見すると、通常のif
ステートメントのように機能します。一見すると、それは.. 通常のif
ステートメントのように機能します。ぱっと見、SOさんにお願いすることにしました。if
この構文には特別な意味がありますか、それとも特定の場合に重要なステートメントとの微妙な違いがありますか?
はい、if文です。
多くmatch
の場合、OCaml コードでは よりも一般的でif
あるため、統一性のために使用される場合があります。
前の回答には同意しません。if ステートメントの作業を行いますが、それよりも柔軟です。
「パターン マッチングは switch ステートメントですが、10 倍強力です」と誰かが述べた
パターン マッチングの使用方法を説明しているこのチュートリアルをご覧ください リンクはこちら
また、OCAML パターン マッチングを使用すると、構成されたデータを単純なデータ (リスト、タプルなど) に分割できるようになります。
> Let imply v =
match v with
| True, x -> x
| False, _ -> true;;
> Let head = function
| [] -> 42
| H:: _ -> am;
> Let rec sum = function
| [] -> 0
| H:: l -> h + sum l;;