1年前ラムダ式は「その場でスグに関数が作れる」ところが利点だと思います。「ラムダ式は本当に必要なのか?別に必要ないのでは?」と疑問を抱いている間には有用性に気がつかないものでしょう。言うと、ラムダ式を使う必要がないと思うならば使わなくても問題がないので、「あ、ここでラムダ式使うと便利だ!」ということがある時までに使わなけば有用性に気づくと思います。std::endl;});}上のコードを見ていただくと、ラムダ式が一番手っ取り早く書けているのがわかると思います。関数オブジェクトを作るレベルのものでなければ、ラムダ式を使うのが楽です。関数オブジェクトを作る必要がなくなります。1年前なるほど、確かに短い関数の場合は、外部に関数を作って・・・とするのが少し面倒だとは思っていました。考えてみれば、ラムダ式のような「別に無くても作れるけどあると便利だよね」というような機能は他にもたくさんありましたね。言ってしまえばテンプレートもそれにあたりますし。1年前ラムダ式は周囲の変数を式の内部に閉じ込めた関数オブジェクトを簡易に生成する事ができるのが最大の利点と思っています。10が表示される}生成した関数オブジェクトを保持しておいて、後で別の場所で遅延実行させることもできます。構造体と関数ポインタでも同様の事ができますが、より簡潔に直感的に記述する事ができます。北海道在住のため、地震でしばらくこれませんでした・・。ラムダ式はStreamAPIと相性がよく、関数型プログラミングを実現させてくれる点も見逃せません。命令型プログラミングと、関数型プログラミングの違いが分からなければ、リンク先をご覧ください。https://qiita.com/munieru_jp/items/6c0dbada463e00429fd1以下のコードはリンク先からの引用です。従来の命令型プログラミングだとこのように書かなければなりません。「リストに詰める」ことです。これをこの文章通りにプログラミングできればバグも減り、コードの可読性も向上するはずですが、命令型プログラミングではそれが困難です。ここで、StreamAPIとラムダ式を用いて書き直してみます。.collect(Collectors.toList());これを改めてみてみましょう。「リストに詰める」ことをしています。命令型プログラミングと関数型プログラミングはどちらが分かりやすでしょうか。実現したいことを文章に起こした通りに実装できていると思えます。私はこの本を持っていますが、ラムダ式はそれだけで一冊本が書けてしまうほどの使い方があります。深く知りたければラムダ式に特化した本を読んでみるとよいかと思います。1年前なるほど・・・関数型プログラミングを学ぶことで、より理解が深められそうですね!本気でラムダ式を利用しようとなると、プログラミングの考え方から見直さないと駄目みたいです(笑)見やすさ、バグの生まれにくさという点で関数型のほうが圧倒的に優れているように見えますし、コーディング時間も短縮できそうで、関数型が流行るのも納得という感じです。余談ですが、関数型よりも命令型のほうが「俺今めっちゃプログラミングしてる」感はありあすね。1年前"「俺今めっちゃプログラミングしてる」感"を大事にしたい頃は命令型プログラミングをしていてよいと思います。必要だという段階に達した時にまた考えればよいと思います。JavaだってJava7まではStreamAPIはありませんでしたし、C++もC++11,14まではありませんでした。それまでは無しでもみんな大規模なシステムを作っていたのです。効率よく、バグの少ないコーディングをするかと突き詰めていくと今とは違うコーディングに行きつきます。(その時それが関数型プログラミングではないかもしれません)その段階を経るのは悪いことではありません。色んな段階で色んなコーディングを経験してみてください。1年前C++のラムダ式の話であることを前提に回答しますが、C++のラムダ式は関数オブジェクトの糖衣構文なので、ラムダ式がなくても同等のコードを記述することができます。1回しか書かないような述語関数のために一々関数オブジェクトを書くのは面倒ですし、ラムダ式のうち、変数キャプチャを使うような類のものを関数オブジェクトとして記述するというのは分かりづらいコードになりますし面倒ですね。ラムダ式の方が便利な例をということであれば、最初に挙げられた例のfor_eachの出力先をstd::coutではなく、std::ofstreamで開いたoutput.txtとするようなコードをラムダ式ありと無しで書いてみるといいかと思います。何が変わるのかわかりませんでしたが、いざ作ってみるとあ~ら不思議。うまくいかない...ラムダ式では、キャプチャの機能を使用することで簡単に外部の変数などにアクセスできますが、関数オブジェクト等の場合、for_eachなどのテンプレートでは直接関数の引数を記述することができないため、非常に面倒ったんですね。ラムダ式の他にも様々な方法がありましたが、どれも非常に分かりづらい&面倒くさいでラムダ式を使わない理由がないと思うほどです。当たり前のように利用していたキャプチャですが、なくなって初めてその大切さに気付きました。↑1年前ラムダ式では、キャプチャの機能を使用することで簡単に外部の変数などにアクセスできますが、関数オブジェクト等の場合、for_eachなどのテンプレートでは直接関数の引数を記述することができないため、非常に面倒ったんですね。してオープンできないようにしても例外は発生しません。例外をキャッチしたらプログラムは停止しませんから、オープンできてないファイルへの書き込みを行おうとしますよ。1年前ファイルをオープンできなかった場合の処理について普通に失念しておりました・・・ハズカシイその記述は一番最初に思いつきましたが、下記のようにしていたため、エラーを出しまくって諦めてました・・コントラスタで引数を取ることで、そのような書き方ができたんですね。ミクプラは自由にリンクできます。