TL;DR
内容
レコードの場合
レコード型の定義と値の構築は、次のように書く。
type Person = {First:string; Last:string}
let aPerson = {First="Alex"; Last="Adam"}値は分割代入で取り出せる。
let {First=first; Last=last} = aPersonドット記法でフィールドにアクセスすることもできる。
let first = aPerson.First
let last = aPerson.Last選択型(判別共用体)の場合
type OrderQuantity =
| UnitQuantity of int
| KilogramQuantity of float値を構築するときは、ケースラベルのどれかをコンストラクタ関数として使う。
let anOrderQtyInUnits = UnitQuantity 10
let anOrderQtyInKg = KilogramQuantity 2.5値を分解するときは、パターンマッチを使う。
let printQuantity aOrderQty =
match aOrderQty with
| UnitQuantity uQty -> printfn "%i units" uQty
| KilogramQuantity kgQty -> printfn "%g kg" kgQty
printQuantity anOrderQtyInUnits // 10 units
printQuantity anOrderQtyInKg // 2.5 kg