どのように私はこのC#の延長のように、例えば、F#で拡張メソッドを作成します:拡張メソッド(F#)の作成方法を教えてください。
public static string Right(this string host, int index)
{
return host.Substring(host.Length - index);
}
どのように私はこのC#の延長のように、例えば、F#で拡張メソッドを作成します:拡張メソッド(F#)の作成方法を教えてください。
public static string Right(this string host, int index)
{
return host.Substring(host.Length - index);
}
のF#から呼び出すことができるF#の拡張のために:
type System.String with
member x.Right(index) = x.Substring(x.Length - index)
なお、ベータ版のよう1の場合、これはC#互換の拡張メソッドにはなりません。
C#から表示される拡張メソッドを生成するには(F#の拡張メソッドとしては使用できません)、元の投稿へのBrianの編集のリンクを参照してください。
私はこれが実際にあなたの質問に答えていないことを知っていますが、それは指摘する価値があります。 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)
ダーン、それは私が望んだものです。 – esac