2013-07-02 18 views
1

如何在盒裝元組上匹配模式?還是有更好的辦法做這樣的事情(例如簡化):F# - 在盒裝元組上匹配模式

open System.Drawing 

let coerceColor a = 
    match box a with 
    | :? Color as c -> c 
    | (:? int as r),(:? int as g),(:? int as b) -> Color.FromArgb(r,g,b) 
    | _ -> failwith "Cannot coerce color" 

回答

4
let coerceColor a = 
    match box a with 
    | :? Color as c -> c 
    | :? (int*int*int) as t -> t |> Color.FromArgb 
    | _ -> failwith "Cannot coerce color" 

但如果我可以改變設計,我寧願使用DU或者用重載靜態成員。

+0

感謝古斯塔沃,我認爲它一定很好,很簡單。 – Goswin