F# 學習筆記 6 記錄和類別
2013-03-11
// 型別: 記錄
// ---------------------------------------------------------------
type Card = { Name : string;
Phone : string;
Ok : bool }
let cardA = { Name = "Alf" ;
Phone = "(206) 555-0157" ;
Ok = false }
let cardB = { cardA with Phone = "(206) 555-0112"; Ok = true }
let ShowCard c = c.Name + " Phone: " + c.Phone + (if not c.Ok then " (unchecked)" else "")
// 型別: 類別
// ---------------------------------------------------------------/
// 二維向量
type Vector2D(dx:float, dy:float) = // 向量預先計算的長度
let length = sqrt(dx*dx + dy*dy) /// 在 X 軸上的位移
member v.DX = dx /// 在 Y 軸上的位移
member v.DY = dy /// 向量的長度
member v.Length = length // 依照一個常數重新調整向量
member v.Scale(k) = Vector2D(k*dx, k*dy)
記錄和類別就是型別之一 到現時為止, F# 的型別有等位,記錄和類別, 之後還會說最後的一個:介面
這個Card 是一個自定義的type 然後cardA
因為Name, Phone, Ok, 都配對到Card 裡, 所以就成為了Card 下面那個就是Class 的意思; 除了參數, 也有方法