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 的意思; 除了參數, 也有方法