LoginSignup
2
2

More than 3 years have passed since last update.

ラムダ式を無知から少しでも理解したい!

Posted at

ラムダ式を無知から少しでも理解したい!

はじめに

ラムダ式を理解できてなかったので、いろいろ勉強して見た結果
理解したものをまとめたものがこちらの記事です。

目的としては0%の人が5%まで理解できたらいいな~という目的です。
この記事なんかより他の記事の方が分かりやすいのは明確なので、これを見てくれた人は必ず他の記事を読んでさらに理解を深めてほしいです。:smiley:

ラムダ式とは何ぞ?

プログラムを勉強していくうえでどこかでラムダ式を聞くと思う。
ラムダ式は『名前のない関数』です 
ちゃんとした名所は『無名関数』といいます。

簡単なラムダ式の定義をざっくりと

qiita.rb
auto add = [](){};

ラムダ式の何が便利か

小規模な使い捨ての関数を作るのに便利です。ほかにもSTLの関数を使わなくても済むことがあります。
コードの行が少なく済んだりと覚えていて損はありません。:triumph:

この前の記事のfor文を使わなくてすむ便利関数でも紹介した

before
std::for_each(m_objects.begin(), m_objects.end(),std::mem_fun(&GameObject::Draw3D));

これをラムダ式を使うとこのようになります

after
std::for_each(m_objects.begin(), m_objects.end(),[](GameObject* obje) {obje->Draw3D}));

となります。

他にもありますが言いたいことは他の記事と似てるので割愛

で?何がいいの?

std::for_each(m_objects.begin(), m_objects.end()の処理をしたら何かしたいってなった時
ラムダ式ならobje->Draw3D を変えてやればいいのだ。

ラムダ式のメリットは 【可読性の向上】【処理の入れ替】【単純化】と思っている。

ロボットが銃やレーザーを手に持つ(独立)タイプならば、ロボットに槍を持たせるときは剣と入れ替えてしまえばいいのだ。
だが、くっついている(依存)タイプなら話が変わる。 まず剣を取りはずし、どう槍を持たせるかを考えて
どのように槍をロボットに付けてやるか(処理)を考えないといけない。

タイプ 武器を変更するとき 便利さ
装備タイプ  取り外し可能 
合体タイプ 作り直し、取り外し

まとめ

(はてこのしょぼさで何をまとめろと言うのかね)
ラムダ式を使えば、複雑な処理、STLを使わなくて住むこともあります。
使いこなせれば強力な武器にもなります。std::functionやStateパターンでも活躍します。
ぜひ使いこなせるようになりましょう!

2
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2