第6章 ユーザー定義関数 / 第2回 模擬試験

次のコードの実行結果として正しいものはどれか。 ```php function greet(string $name = "Guest"): string { return "Hello, {$name}!"; } print greet(); print greet("Alice"); ```

Hello, !Hello, Alice!
Hello, Guest!Hello, Alice! 正解
エラーが発生する
Hello, Guest!Hello, Guest!
解説
引数を省略して`greet()`を呼び出すと、パラメータのデフォルト値`"Guest"`が使われ`"Hello, Guest!"`が返ります。`greet("Alice")`のように明示的に引数を渡すと、その値が優先され`"Hello, Alice!"`が返ります。 例: ``` function greet(string $name = "Guest"): string { return "Hello, {$name}!"; } print greet(); // Hello, Guest! print greet("Alice"); // Hello, Alice! // 連続して出力すると: Hello, Guest!Hello, Alice! ``` デフォルト引数は「値が渡されなかった場合にのみ」使われる点、明示的に`null`を渡した場合はデフォルト値は使われず`$name`が`null`になろうとする点(型宣言が`?string`などnull許容でない場合はエラーになります)にも注意してください。 (参照: 独習PHP 第4版 第6章 ユーザー定義関数 6.3.1節 引数の既定値 p.279〜280)