無名関数
CoddyのPHPジャーニー「論理とフロー」セクションの一部 — レッスン 1/68。
匿名関数(クロージャとも呼ばれます)は、名前が指定されていない関数です。これらは、完全な名前付き関数を作成するのが過剰な、短い一度限りのタスクに最適です。
匿名関数を作成するには、関数名を指定せずにfunctionキーワードを使用し、それを変数に代入します:
<?php
$greeting = function($name) {
echo "Hello, " . $name . "!";
};
?>閉じ括弧の後のセミコロンに注目してください。これは、関数を変数に代入しているために必要となります。
無名関数を呼び出すには、変数名の後に括弧を付けます。
<?php
$greeting("Alice"); // 出力: Hello, Alice!
?>匿名関数は、一度しか使用しない名前付き関数でコードを乱雑にすることなく、特定のタスクのために単純な関数が必要な場合に特に有用です。
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
チャレンジ
簡単数値を引数として受け取り、その数値の2乗を返す無名関数を作成してください。この関数を $square という名前の変数に代入してください。
入力として数値を受け取ります。その数値を読み込み、作成した無名関数をその数値で呼び出し、結果を出力してください。
入力形式: 1つの数値(小数が含まれる場合があります)
期待される出力: 入力された数値の2乗
チートシート
無名関数(クロージャ)は、名前が指定されていない関数で、短時間の使い捨てのタスクに便利です。
名前を付けずに function キーワードを使用して無名関数を作成し、それを変数に代入します。
<?php
$greeting = function($name) {
echo "Hello, " . $name . "!";
};
?>関数を変数に代入する場合、閉じ括弧の後のセミコロンが必要であることに注意してください。
変数名の後に括弧を付けて無名関数を呼び出します。
<?php
$greeting("Alice"); // 出力: Hello, Alice!
?>自分で試してみよう
<?php
// 入力を読み込む
$number = floatval(fgets(STDIN));
// TODO: 無名関数を作成し、$square変数に代入する
// 関数を呼び出して結果を表示する
echo $square($number);
?>このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。