カレーは、機能プログラミングの重要な概念です。その中心的なアイデアは、マルチパラメーター関数を単一のパラメーターを受け入れる一連の関数に変換することです。 PHPでは、矢印関数を使用してカリーを実装し、コード構造を簡素化し、コードの再利用性を改善できます。
矢印関数は、PHP 7.4で導入された新しい構文です。その特徴は、外部変数をキャプチャできることであり、関数本文には1つの式が1つしか含まれていないため、返されるキーワードを使用する必要はありません。
矢印関数を介したカレー関数の例は次のとおりです。
// 通常の追加関数を定義します
$add = function($a, $b) {
return $a + $b;
};
// カレー関数を定義します
$curry = function($func) {
return fn($a) => fn($b) => $func($a, $b);
};
// カレーを使用して追加関数を呼び出す
$curriedAdd = $curry($add);
// 通話方法1
$result = $curriedAdd(1)(2); // 3
echo $result;
// 通話方法2
$add2 = $curriedAdd(2); // 固定パラメーター a = 2
$result = $add2(3); // 5
echo $result;
// 通話方法3
$add5 = $curriedAdd(5); // 固定パラメーター a = 5
$result = $add5(6); // 11
echo $result;
上記のコードでは、最初に単純な追加関数「$ add」を定義し、次に関数「$ curry」を介して関数のカレーを実装します。カレー関数は、パラメーター「$ a」を受け入れ、新しい関数を返すことができる矢印関数を介して実装されます。この新しい関数は、別のパラメーター「$ b」を受け入れ、最後に元の関数「$ func」を介して結果を計算します。
カレーを通じて、パラメーターを柔軟に渡すことができ、3つの一般的な呼び出し方法があります。
このカリー方法は、機能の柔軟性を向上させるだけでなく、特に関数の組み合わせとコールバック関数処理において、コードをより適切に管理および再利用するのにも役立ちます。
PHPの矢印関数を使用してカリーを実現することにより、コード構造を簡素化し、コードをより読みやすく保守可能にすることができます。ただし、実際のプロジェクトでは、乱用を回避し、コードを複雑にするために、特定のアプリケーションシナリオに基づいてカレーを使用するかどうかを決定する必要があります。