LoginSignup
0
0

More than 3 years have passed since last update.

【プログラミング】吾輩は関数である名前はまだない

Last updated at Posted at 2020-06-03
1 / 12

はじめに

この記事ではチョットキニナル
プログラミングワードについて書いています。


ラムダ式

初めてラムダ式と聞いて
ピンと来ませんでしたが
ラムダ式とは要するに

「無名関数」を表現する為の
書き方のことである。


無名関数

英語だといろんな呼び名があるみたいです。

nameless function
anonymous function


無名関数とは

その名の通り
名前を持たない状態で定義される関数のこと

通常の関数の場合は以下のような定義方法を使うと思う。
PHPで例を出すと

<?php
  function add($args1, $args2) {
    return $args1 + $args2
  }
  $result = add(1,2);
  echo $result;
  //3
?>

無名関数で定義すると

名前がない状態で定義されるが
変数に代入したときに関数オブジェクトに化ける。

この時初めて関数名を持つことができる。

<?php
  $add = function ($args1,$args2){
      return $args1 + $args2;
  };

  $result = $add(1,2);
  echo $result;
  //3
?>

どんなときにつかう

周りを見渡す限りでは
主にイベントプロシージャに使われている。
ような気がする。

というのも
イベントプロシージャは別で定義するより
すぐその場で書いてしまったほうが
よかったりする。

C#では
コマンドボタンオブジェクトに
イベント登録を行うとき使う。


使うことのメリット

・関数を定義しないのでコンパクトであること
・定義済の関数名に依存しないこと
・コールバック関数として利用しやすいこと


まとめ

今回はラムダ式について書きました。
うまく扱えれば
ベーシックな関数定義を増やすことなく
関数を定義できます。
ただ、増やしすぎても
保守上の観点からはとても良くないので
適切に扱いましょう。

訂正

【無名関数で定義すると】の
関数閉包の例として取り上げたコードについて

「こういった処理をクロージャ(関数閉包)という。変数に関数を包み込むという感じかな。」

と記載させていただきましたが
関数閉包の場合は関数オブジェクトを返して
変数に代入する場合でした。

ご指摘くださった方(https://qiita.com/tadsan)
誠にありがとうございました。


参考資料

ラムダ式 (C# プログラミング ガイド)


おわり


0
0
1

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
0
0