ラムダ式/関数でどのようなデザインパターンがうまく機能していますか?ラムダではどんなデザインパターンがうまくいくのですか?
答えて
ラムダが活発IoCコンテナとDI(例えばモックフレームワーク)で使用される最近
私はこの分野で以下のGoFパターンを見ることができます:
部品番号は、ラムダのアクティブ用いてProxy
パターンを使用しています。例えば:あなたはいつものシングルトンのように、テスト容易性に自分自身を制限することなく、たとえばautofacためIoC容器にSingleton
パターンを実装することラムダのヘルプを見つけることができます
var mock = new Mock<IFoo>();
mock.Setup(foo => foo.DoSomething("ping")).Returns(true);
行います
builder.Register(c => new MyClass()).SingleInstance();
そしてFactory Method
パターンによる型登録のパラメータを持つコンストラクタ呼び出しを証明する手段:
builder
.Register(c => new ObjectContainer(ConnectionStrings.CustomerDB))
.As<IObjectContainer>()
.Named("CustomerObjectContainer");
はまた
Expression <TDelegate>
クラスも密接Interpreter
パターン
+1。私は委任もデザインパターンだと思う。 –
に関連して、私は彼らが公平なビットを使用参照いくつかの状況であります。
1については、彼らは、コレクション以上の高レベルの反復のための素晴らしいです。しばしば、何らかの種類の情報をリストやツリーなどに適用するだけです。 lambdaを使用すると、コレクション処理のための使いやすくコンパクトなコードが作成されます。 (LINQを使用してC#で)ランダムに無意味例えば:
var list = new List<int>();
//...
list.Where(x => x < 10).Aggregate((current, total) => total + current * current);
ラムダないが、この種のコードは恐ろしくと不必要に大きくなるであろう。
コールバックを中心とするAPIを使用すると便利です。コールバックを1回使用するだけで済みます。これは、名前空間を乱雑にする余分なコードなので、1回限りの使用を意図した完全な関数を書く必要がありません。
JavaScriptから最後のデザインパターンが得られます。私は閉鎖がラムダの必要な構成要素であるかどうかわからないので、これがラムダ一般に当てはまるかどうかはわかりません。しかし、多くの言語でラムダが変数をクローズできるようになったので、とにかく言及します。
JavaScriptは、プロトタイプベースの継承を介してオブジェクト指向設計が可能です。しかし、1つの欠点は、データ抽象化の概念がないことです。しかし、ラムダが実際にデータ抽象化を提供するために使用されることがあることは間違いなく発見されました。 (実際にはラムダです)無名関数のクロージャを使用することにより、我々はこれを達成することができます:getWidth
とgetHeight
によって定義された閉鎖がwidth
とheight
パラメータを含んでいるので
function Rectangle(width, height) {
this.getWidth = function() { return width; }
this.getHeight = function() { return height; }
}
、パラメータがまだメソッドから使用可能です。しかし、他の場所では維持されないので、一旦Rectangle
コンストラクタが終了すると、他のコードにアクセスすることはできません。したがって、width
とheight
は今やRectangle
からプライベートになり、提供されたアクセサメソッドを介してのみアクセスできます。
ラムダだけでいい理論的な感じがしていると思います。それらをサポートする言語は、より完全で、制限が少なく、煩雑さが少ないと感じます。
モナドパターンは完全にラムダに基づいており、ラムダを使用する場合にのみ実装できます。 C#でのモナドの 説明:C++での http://ericlippert.com/category/monads/
モナド: http://bartoszmilewski.com/2011/07/11/monads-in-c/
のPython:近い有権者へ http://www.valuedlessons.com/2008/01/monads-in-python-with-nice-syntax.html
- 1. なぜRubyではランダムがうまくいくのですか?
- 2. デザインパターンはどうですか?
- 3. ラムダが返すラムダ:object_listはどういう意味ですか?
- 4. デザインパターンはなんですか?
- 5. アプリがうまくいくとどうなりますか?
- 6. Appengineではどんな支払いゲートウェイがうまく機能しますか?
- 7. Springフレームワークではどのようなデザインパターンが使用されていますか?
- 8. FacebookはどうやってAccessSpreaderがうまくいくのですか?
- 9. ラムダ微積分が(全く)使われないのはなぜですか?
- 10. Scalaオプションではforeachがうまくいくのはなぜですか?
- 11. なぜ、アンドロイドエミュレータがうまくいくのですか?
- 12. ゲームはソースからはうまくいくが、py2appではできない。
- 13. どうして私のpythonコードがうまくいかないのですか?
- 14. Googleのpandas_datareaderがどうしてうまくいかないのですか?
- 15. なぜニューラルネットワークはうまくいくのですか?
- 16. Rails - なぜ1つはうまくいくのですか?
- 17. do_shortcode()はパブリックページではうまくいくが、管理ページではうまくいかないのはなぜですか?
- 18. どこで出力フォーマットがうまくいかないのですか?
- 19. joomlaではいくつかの文字がうまく見えません1.5
- 20. ここでどのようなデザインパターンが提案されていますか?
- 21. 私のゲームはLinuxではうまく動くが、Windowsではうまくいかないのはなぜですか? (Java .jar)
- 22. ラムダ式が正しくない
- 23. 私のDjangoフィルタはどうしてうまくいかないのですか?
- 24. ハイチャート - なぜ "this.series.name"がうまくいかないのですか?
- 25. なぜ応答がうまくいかないのですか?
- 26. HTMLWidget:ShinyアプリはRstudioではうまく動くが、Shiny-Serverでは動かない
- 27. forEach対forループ? forループはうまくいくようですが、forEachではできません。どうして?誰か説明できますか?
- 28. なぜここではうまくいきませんか?
- 29. BotFrameworkはどのようなデザインパターンでモデル化されていますか
:なぜ、この "?ない本当の問題は" –