OCaml のあらゆる種類のコンストラクター内で値を取得する伝統的な方法は、パターン マッチングを使用することです。パターンマッチングは OCaml の一部であり、他の言語で既に見たものと最も異なる可能性があるため、慣れ親しんだ方法でプログラムを作成しないことをお勧めします (たとえば、ocaml-lib の問題を回避するなど)。 )代わりに試してみて、気に入るかどうかを確認してください。
let contents =
match z with
Some c -> c;;
変数contents
が割り当てられ3
ていますが、警告が表示されます:
警告 8: このパターン マッチングは網羅的ではありません。以下は、一致しない値の例です: なし
一般的なケースでは、内部を調べたい式が必ずしもSome c
. オプション タイプが選択された理由は、通常、その値がNone
. ここでコンパイラは、考えられるケースの 1 つを処理していないことを思い出させています。
「詳細な」パターン マッチが可能で、コンパイラは引き続き網羅性をチェックします。を取るこの関数を考えてみましょう(int option) option
:
let f x =
match x with
Some (Some c) -> c
| None -> 0
;;
ここでは、大文字と小文字を区別するのを忘れてSome (None)
おり、コンパイラはそのように伝えます。
警告 8: このパターン マッチングは網羅的ではありません。一致しない値の例を次に示します。