2009-10-06 16 views

答えて

19

のF#から呼び出すことができるF#の拡張のために:

type System.String with 
    member x.Right(index) = x.Substring(x.Length - index) 

なお、ベータ版のよう1の場合、これはC#互換の拡張メソッドにはなりません。

C#から表示される拡張メソッドを生成するには(F#の拡張メソッドとしては使用できません)、元の投稿へのBrianの編集のリンクを参照してください。

+0

ダーン、それは私が望んだものです。 – esac

3

私はこれが実際にあなたの質問に答えていないことを知っていますが、それは指摘する価値があります。 F#や他の関数型言語では、静的メソッド(Seqモジュールのような)を持つモジュールが他の関数と組み合わされていることがよくあります。私が見た限り、インスタンスメソッドは簡単に構成されません。これがこれらのモジュールが存在する理由の1つです。この拡張の場合、Stringモジュールに関数を追加することができます。

module String = 
    let right n (x:string) = 
     if x.Length <= 2 then x 
     else x.Substring(x.Length - n) 

このように使用されます。

この場合、拡張メソッドはあまりコードではありませんが、

["test"; "test2"; "etc"] 
|> List.map (fun x -> x.Right 2)