組とレコード
■組
組とはいくつかのデータ型を並べてひとつのデータとしたものです。
座標の(x, y)のような、複数のデータ型を1つデータとして表す場合に使用します。
●書式
・書式例
(データ型1, データ型2, ...., データ型n)
・具体例
(0.0, 0.0)
(* 組が作成されたら「*」で表現する *)
(* float * float *)
●仕様
組に使用するデータ型の個数は何個でも問題なく、
型の種類も同じにする必要はありません。
例:
(0.0, 0, "aaa")
(* float * int * string *)
組の中に組を作成することも可能です。
例:
("Position", (0.0, 0.0))
(* string * (float * float) *)
●使用方法
組は他のデータ型のように1つの組みデータに名前を付けることが可能で、
そのデータを関数の引数などに使用することができます。
例:
let addSum (a, b) = a + b
let pair = (10, 20)
(* int * int *)
addSum pair
(* 30 *)
■レコード
レコードとはデータ型の集まりのことです。
組と違う点はレコードはデータ一つ一つに変数名のような名前(フィールド)を付けれます。
これによって、組のように順番に数値を指定する必要もなく、
フィールドに対して値の設定を行うことが可能となります。
●定義
・書式例
type レコード名 = { フィールド1 : 型; フィールド2 = 型; ... }
・具体例
type t_Employee = { m_Name : string; m_Salary : int }
●宣言
・書式例:
let 変数名 = { フィールド = 値; フィールド = 値; }
・具体例:
let employee = { m_Name = "yamada"; m_Salary = 220000 }
●使用例
レコードのフィールドの値の参照は「レコード名.フィールド」で可能となっており、
レコード自体を関数の引数として使用することも可能です。
type t_Employee = { m_Name : string; m_Salary : int }
let employee = { m_Name = "yamada"; m_Salary = 220000 }
let evaluation employee =
if employee.m_Salary > 400000 then
"good"
else
"sad"