Cpp ラムダ式 新しいページはコチラ
提供: yonewiki
(→ラムダ式) |
|||
22行: | 22行: | ||
ラムダ式の何が便利なのか?sort関数を使ったことが無い人、sort関数を使う人でも関数を引数に指定するタイプの人には何の魅力もないものですが、C++11登場以降は、この記述方式を使うプログラマが増えているのも確かで、覚えておかないと人の書いたプログラムが理解できないというポンコツな人になってしまいます。ややこしさレベルはC++の技術の中では関数ポインタに肩を並べるややこしさを持っています。従来の[]の意味は配列だったし->というえばアロー演算子、こういうイメージを持っている場合は全く理解にたどり着けません。先にも書きましたが | ラムダ式の何が便利なのか?sort関数を使ったことが無い人、sort関数を使う人でも関数を引数に指定するタイプの人には何の魅力もないものですが、C++11登場以降は、この記述方式を使うプログラマが増えているのも確かで、覚えておかないと人の書いたプログラムが理解できないというポンコツな人になってしまいます。ややこしさレベルはC++の技術の中では関数ポインタに肩を並べるややこしさを持っています。従来の[]の意味は配列だったし->というえばアロー演算子、こういうイメージを持っている場合は全く理解にたどり着けません。先にも書きましたが | ||
+ | *'''[キャプチャ](プログラム部に使う引数)->戻り値型名{プログラム本体}''' | ||
− | |||
− | + | という、こういう構造をよく覚える必要があります。[]()->戻り値の型名{}ですね。とんでもない記号にも見えてきます。新しい技術なのだから新しいと感じて当たり前なのです。予告なく似たような記号の組み合わせが全く違う意味で使われる。これがプログラミングを知ったつもりになっている時おとずれる混乱の原因になります。おぼえてしまえば、なんてことはない変な技術なのです。 | |
− | という、こういう構造をよく覚える必要があります。[]()->{}ですね。とんでもない記号にも見えてきます。新しい技術なのだから新しいと感じて当たり前なのです。予告なく似たような記号の組み合わせが全く違う意味で使われる。これがプログラミングを知ったつもりになっている時おとずれる混乱の原因になります。おぼえてしまえば、なんてことはない変な技術なのです。 | + | |
特に気になるのが[]の中のキャプチャですね。キャプチャって言われても…意味がいまひとつ分からない。これはラムダ式の関数本体の外側で使っていた変数で、利用するものを指定する部分です。 | 特に気になるのが[]の中のキャプチャですね。キャプチャって言われても…意味がいまひとつ分からない。これはラムダ式の関数本体の外側で使っていた変数で、利用するものを指定する部分です。 | ||
+ | |||
+ | |||
+ | 最短ではない省略としては | ||
+ | |||
+ | *'''[キャプチャ](プログラム部に使う引数){関数本体}''' | ||
+ | |||
+ | |||
+ | というのもよく使われると思います。これは関数本体が戻り値を持たないかretuen文で返される値の型に従う場合に ->戻り値の型名 が省略できます。 | ||