向现有类型添加新的静态函数

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