引数とは何かを、関数と戻り値との関係も合わせて図解にしてみた
2019.06.22
プログラミングの勉強を始めてたての頃、何の説明もなく突然使われる単語が「引数」だと思います。
頻繁にでてくるわりにはちゃんとした説明もないので、よくわからず突っかかってしまいます。
今回は、引数・関数・戻り値との関係を視覚的に理解できるように図解して説明していきます。
「引数」は、「いんすう」ではなく、「ひきすう」と読みます。
恥ずかしい思いをしないように気をつけましょう。
引数とは?引数・関数・戻り値の関係をわかりやすく図解
引数とは「関数に渡す値」です。
言葉だと理解しずらいので、自動販売機に例えて「関数・引数・戻り値」の関係を図解しました。
上記のように、引数を渡して関数で処理され、戻り値で出力されるといった流れが、引数・関数・戻り値の関係です。
言葉を整理すると、次のようになります。
- 引数:関数に渡す値
- 関数:処理
- 戻り値(返り値):関数から戻ってきた値
この引数・関数・戻り値の関係は現実世界でも数多く使用され、わかりやすい例で言えば「翻訳機」や「電卓」です。
引数 (入力) |
関数 (処理) |
戻り値 (出力) |
|
---|---|---|---|
【翻訳機】 | りんご (日本語) |
翻訳 | apple (英語) |
【電卓】 | 1+1 (計算式) |
計算 | 2 (計算結果) |
このように、ほとんどの仕組みは引数・関数・戻り値で成り立っており、コードを書く上で頻繁に用いられます。
実引数と仮引数とは
引数には「実引数」と「仮引数」の2種類があります。
仮引数は関数内にある「仮の引数」で、実際に入力する引数が「実引数」です。
上記の【翻訳機】の場合、「日本語」が「仮引数」で、実際に入力する「りんご」は「実引数」になります。
仮引数 | 関数内に定義された引数(翻訳機) |
---|---|
実引数 | 関数に渡した引数(りんご) |
引数のメリット
引数を使用するメリットは、コードがスッキリして、エラーが少なくわかりやすいコードになるという点です。
引数を使用すると、同じコード内で何度も使用される同じ処理を、1つの関数を用いて引数・戻り値で使い回すことができるので、非常に簡素化されたコードにすることができます。
実際に、JavaScriptで引数を記述してみます。
JavaScript
// 関数:dentaku、引数:price
function dentaku(price) {
// 関数の処理内容(引数を2倍にして出力する)
return price * 2;
}
// 引数が200の場合
console.log( dentaku(100) );
// 出力結果
200
- 関数:dentaku
- 引数;price
- 戻り値:price * 2
このように、一度関数を作成してしまえば、同じ処理を引数を変えるだけで簡単に戻り値を出力することができます。
引数が頻繁に変わるコードを書く場合などには、「関数・引数・戻り値」があると、何度も同じコードを書かずに済むので、非常に便利です。
引数の渡し方
引数の渡し方には「値渡し」と「参照渡し」の2種類の方法があります。
それぞれの違いは、「値渡しは値そのものをコピーして渡す」のに対し、「参照渡しは値が格納された箱を渡す」という違いがあります。
そのため、値渡しは変数の中身の値が上書きされても参照時の値が出力されるのに対し、参照渡しは変数の中身が上書きされると出力結果も変わるということです。
コードで書いてみると、次のようになります。
値渡し
PHPの値渡しのコードです。
PHPで値渡し
<?php
$x = 2;
$y = $x;
$x = 10;
echo $y;
# 出力結果
2
値をコピーしているため、変数xが変わったとしても、参照時の値が出力されます。
参照渡し
参照渡しは、代入する変数に対して「&」という記号を記述します。
PHP
<?php
$x = 2;
$y =& $x;
$x = 10;
echo $y;
# 結果
10
変数xの箱を参照しているため、変数xの値が変わると出力結果も変わります。
引数の初期値(デフォルト値)
引数には、あらかじめ初期値(デフォルト値)を設定することができます。
引数の初期値を設定すると、引数に何も設定していない場合、自動で初期値が出力されます。
下記は、引数の初期値に「apple」を指定した場合のコードです。
PHP
<?php
function fruit($value = 'apple'){ //初期値を「apple」に設定
echo 'これは'.$value.'です。';
echo '
';
}
fruit(); // 引数なし
?>
# 出力結果
これはappleです。
上記のように、引数の初期値に「apple」を設定することで、引数を指定しない場合は初期値の「apple」が出力されます。
引数まとめ
引数についてまとめると、以下のようになります。
- 引数は「関数に渡す値」を指す言葉
- 引数には「実引数」と「仮引数」がある
- 引数の渡し方には「値渡し」と「参照渡し」がある
- 引数の初期値(デフォルト値)は設定できる
関数・引数・戻り値は頻繁に出てくる単語なので、しっかりと覚えましょう。