auの日記

プログラミング初心者の日記。(auはハンドルネームです)

OCamlで出てくるヴァリアントとは

auです。

最近OCamlを学んでいるのですが、「ヴァリアント」という様々な型に代入できるようにする用語があるんですけど、白猫プロジェクトの職業にしか見えないのでちゃんと調べることにしました。ちなみに白猫で一番好きなのはジュダです。

ヴァリアントとは

ヴァリアント(Variant)とは、「異なる・多様な」という意味です。

プログラミングで使用される際には、様々な型を変数内で宣言することができるすごい便利なやつです。

type member =
  Student of {id: string; name: string; grade: int};; (* str型のid, nameとint型のgradeを代入できる *)

Student{id="1"; name="au"; grade=3};;

type member = Student of { id : string; name : string; grade : int; }
- : member = Student {id = "1"; name = "au"; grade = 3}

(前回記載していた方法だとclassが予約語で、型にあっていない値を渡してしまっていました。id:ryskosn さんはてブでのご指摘ありがとうございます。)

宣言した変数名と型に合うように記述すると代入することができます。どれか1つでも型や変数名が違っているとエラーで返されます。

match withを別の関数で使用することで短い行数で実現できるプログラムもあると思います。



C言語のunionなどと同じような機能です。ラベルは必ず大文字で始める必要があります。