向現有型別新增新的靜態函式

F#允許使用新的靜態函式擴充套件現有型別。

type System.String with
    static member EqualsCaseInsensitive (a, b) = String.Equals(a, b, StringComparison.OrdinalIgnoreCase)

這個新函式可以像這樣呼叫:

let x = String.EqualsCaseInsensitive("abc", "aBc")
// result is True

此功能可能意味著不必建立實用程式函式庫,而是可以將它們新增到相關的現有型別中。這對於建立更多 F#友好版本的函式非常有用,這些函式允許使用 currying 等功能。

type System.String with
    static member AreEqual comparer a b = System.String.Equals(a, b, comparer)

let caseInsensitiveEquals = String.AreEqual StringComparison.OrdinalIgnoreCase

let result = caseInsensitiveEquals "abc" "aBc"
// result is True