☄️

無名関数のメリットについて今一度考えてみる(PHP)

2023/08/24に公開

無名関数とは

無名関数とは、関数名を指定せずに作成出来る関数のこと。

<?php
// 通常の関数
function test($x, $y)
{
    return $x + $y;
}

// 無名関数
$anonymous = function ($x, $y) {
    return $x + $y;
};

無名関数のメリット

1. 関数のコールバックに使える

関数の中には、引数として関数を受け取る関数もある。
phpでいうarray_mapなど。

https://www.php.net/manual/ja/function.array-map.php

これらの関数の引数として関数を渡すとき、渡す関数は一回使いたいだけで、別に使い回しが目的じゃない場合などがある。
その場合わざわざ関数を定義せずに無名関数を用いた方が賢明そう。

2. 名前空間を汚さない

hogefunc() という関数を定義してしまうと、hogefuncという名前をここでひとつ潰してしまう。

関数名として使える名前の候補をひとつ無駄遣いしており、無駄に名前を定義して他で使える名前の候補を潰していくことは「名前空間の汚染」に繋がってしまう。

まとめ

無名関数を使うと名前の衝突を避けたり、使い方によっては見通しのよいプログラムにすることができます。
無理に使う必要もありませんが、状況に応じて普通の関数と使い分けてみるのはいかがでしょう。

参照

https://zenn.dev/askua/articles/ee515f1a8e7531
https://qiita.com/dublog/items/0eb8bcea2fc452c0b4b2

https://stackoverflow.com/questions/10273185/what-are-the-benefits-to-using-anonymous-functions-instead-of-named-functions-fo

Discussion