3

F# リストで拡張メソッドを定義するにはどうすればよいですか?

このような素朴な試みはエラーになります:

type list with
    member this.abc() = 100
4

2 に答える 2

8

正しい構文は次のとおりです。

type List<'a> with
    member this.abc() = 100

修飾名も使用できますMicrosoft.FSharp.Collections.List<'a>が、型の省略形list<'a>は使用できません。

とはいえ、モジュール関数の使用はより慣用的です。(|>)モジュール関数を作成して、パイプ演算子を介して他の関数と簡単に組み合わせる必要があります。

module List = 
    let abc (xs: _ list) = 100
于 2013-02-26T14:49:42.263 に答える
2
type Microsoft.FSharp.Collections.List<'T> with
  member x.IsNotEmpty() = not (List.isEmpty x)

let xs = [1]
xs.IsNotEmpty
于 2013-02-26T14:48:38.047 に答える