列表上的扩展方法?

dha*_*ech 3 extension-methods f#

如何在F#列表上定义扩展方法?

像这样的天真尝试会导致错误:

type list with
    member this.abc() = 100
Run Code Online (Sandbox Code Playgroud)

pad*_*pad 7

正确的语法是:

type List<'a> with
    member this.abc() = 100
Run Code Online (Sandbox Code Playgroud)

您也可以使用限定名称Microsoft.FSharp.Collections.List<'a>,但list<'a>不能使用类型缩写.

也就是说,使用模块功能更加惯用.您应该创建一个模块函数,以便通过管道(|>)运算符轻松地与其他函数结合:

module List = 
    let abc (xs: _ list) = 100
Run Code Online (Sandbox Code Playgroud)