この回答はStackOverflow(およびその他のソース)で検索されていますが、何も見つかりませんでした。私はウィジェット定義を持っていた場合のC#で F#リスト、IEnumberableなどの拡張メソッド
、言う:class widget
{
public string PrettyName() { ... do stuff here }
}
と私はウィジェットのリストを簡単に印刷を可能にしたかった、私はこれを行う可能性があります:
namespace ExtensionMethods
{
public static PrintAll(this IEnumerable<Widget> widgets, TextWriter writer)
{
foreach(var w in widgets) { writer.WriteLine(w.PrettyName()) }
}
}
方法私はレコードタイプとコレクション(F#で好きなListやSeq)と同様のことを達成しますか?私はWidgestのリストを持っていて、このようなことをしたコレクションの関数を呼び出せるようにしたいと思います。関数がそれが付いているコレクションの状態を変更せず、新しい値を返すと仮定します(F#以降)。
上記のシナリオで使用するためにprintAll関数をウィジェットレコードタイプのメンバーとして定義するにはどうすればよいですか? – fbl
@ flevine100 - 通常、printAllを型のメンバーとして定義するのではなく、モジュール内のレットバインド関数として定義します。私は例を含めるために私の答えを編集しました。 – kvb
ありがとう! - 機能プログラミングは、明らかにコード構成について考えている別の方法です。 – fbl