
[Q & A] returnって何?引数によって戻り値が変わる?
投稿日: 2018年1月29日
コードモンキーサポートデスクに寄せられたユーザーからのご質問およびコードモンキーサポートデスクからの回答を紹介しております。
今回寄せられたご質問は、前回に続いてまた関数のreturn(戻り値)の考え方について
コードの冒険チャレンジNo.151の「関数から値を返すことができるよ」とはいったいどういう意味ですか?
また、No.152の関数yummy()は「引数によって戻り値が変わる」とのことですが、どういうことですか? 教えてください。
いつもコードモンキーをご利用いただきありがとうございます。
いただいたご質問につき回答いたします。
コードの冒険チャレンジNo.151からの「リターン・アベニュー」では、return文をつかった関数の戻り値という考え方を学習します。
戻り値とは、関数が返す値
関数の戻り値とは、関数の呼び出し元に関数が返す値のことで、例えば、以下のように定義されたexampleという関数は、return のあとに記述された内容「not banana.rotten()」を関数の呼び出し元に返します。
example = ()-> return not banana.rotten()
つまり、この関数exampleを以下のように呼び出すと、
if example()
実行時には関数example()はその戻り値”not banana.rotten()”の内容で置き換えられ、結果以下のコードとして実行されることになります。
if not banana.rotten()
yummy()は、引数によって戻り値が変わる関数
No.152では、”for b in bananas”の中でbを引数として関数yummyを呼び出すことで、すべてのバナナをそれぞれ引数としてyummy関数を実行するというコードで、バナナが腐っているか腐っていないかの判定をします。
ここではyummy関数は以下のように定義されているので、
yummy = (x) -> return not x.rotten()
関数の呼び出し時にわたされた引数”b”がxに置き換えられて実行され、つまりこの関数の戻り値は、
not b.rotten()
として呼び出し元に返されます。
よって、”if yummy b”というif文は”not b.rotten()”という戻り値を受け取って、
if not b.rotten()
となるため、このif文はbが腐ってないバナナの時はtrue(真)となり、腐っているバナナの時はfalse(偽)となります。
以上が、呼び出し時の引数に応じて返す値(戻り値)も変わる関数yummyの定義に関するご説明となります。
戻り値については以下のURLでも説明しておりますので、ぜひそちらも参考にしてみてください。
「[Q & A] 関数injured()の使い方。returnって何?戻り値?」
https://codemonkey.jp/cm_news/q-and-a-function-return/
関数の戻り値については、コードの冒険の「リターンアベニュー(メインモードNo.151から165、スキルモード14-1から14-15)」で学習可能です。是非繰り返しプレイしてみてください。
以上、ご案内いたします。また不明点などありましたらお気軽にお問い合わせください。
引き続きコードモンキーをお楽しみくださいませ。
コードモンキーサポート