プログラミングの基礎 第 8 章 レコード
今回はレコードの話。
8.2 レコードの構文
注意。
# {namae = "asai"; tensuu = 70; seiseki = "B"}:: - : gakusei_t = {namae = "asai"; tensuu = 70; seiseki = "B"}
という例が最初に示されているけど、以下のように先に型の定義をしないとエラーが出るみたい。
# type gakusei_t = {name:string; score:int; grades:string};; type gakusei_t = { name : string; score : int; grades : string; } # {name = "asai"; score = 70; grades = "B"};; - : gakusei_t = {name = "asai"; score = 70; grades = "B"}
本文中でも書いてあったんだけど、見落としてた。
どう書いても実行出来ないからおかしいなーと思ったら 8.5 節で型の定義はやるのね。
先に型定義の構文をやって欲しかったな。
8.3 レコードとパターンマッチ
タプル*1の場合とほぼ一緒。
パターン変数の決め方だけが違って、タプルの場合は構造的に?パターン変数の名前の割り当てが決まるけど、レコードは自分でフィールドにパターン変数の名前を決める。
8.4 そのほかの記法
- フィールド名とパターン変数名は同じでも良い
- パターン変数ではフィールドを省略出来る
- 「レコード . フィールド」という書き方でも値は取り出せる( C の構造体みたいな感じ )
8.5 ユーザーによる型定義
型定義の例。
type gakusei_t = { name : string; score : int; grades : string; };;
最後のフィールドの後のセミコロンは省略出来るみたい。
フィールド名の重複は不可。
まだ途中だけど今日はここまで。
*1:少年オッカムルの第五話で学んだ言葉!