質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Q&A

解決済

2回答

1778閲覧

返り値とは?その存在意義は?

退会済みユーザー

退会済みユーザー

総合スコア0

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

0グッド

0クリップ

投稿2015/06/21 07:57

編集2015/06/21 08:02

lang

1function example($hi = "World"){ 2 return "Hello,$hi"; 3} 4echo example("PHP");

これでHello,PHPが出ることはわかりますが、なぜ

lang

1function example($hi = "World"){ 2 echo "Hello,$hi"; 3} 4example("PHP");

ではいけないのですか?返り値の意味がわかりません。
書きながら思ったのですが、もしかして

lang

1function example($hi = "World"){ 2 return "Hello,$hi"; 3} 4$tera = example("yes!"); 5echo $tera;

なら**$tera"Hello,$hi";が代入されecho $tera;Hello,yes!**が出力されるということですか?
しかし、まだ返り値の意味がわかりません。
返り値は変数でいう値かと思ったのですがどうでしょう?
もし正しければ、返り値はどこにでも代入できるのですか?
返り値はどのような場面に使うのですか?
returnの上の文が何行にもなった場合はどうなりますか?
また、返り値はなんのために存在しているのですか?調べても意味がわかりません...

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

確かにこのサンプルプログラムを見てしまうと、表示されるだけじゃん。
って思ってしまいますね。

でも、仮に関数exampleで何か処理を行ったとしたらどうでしょうか?
関数exampleでデータベースの更新処理や新規登録処理を行った時に関数内でエラーハンドリングを行いその場で処理を中断しても良いかもしれませんが、テータベースが複数テーブル等処理が多数連動した場合全ての処理が正常に行われたかなど判断を行う為の基準になったりもします。

function example1($a = true){
return $a;
}

function example2($a = true){
return $a;
}

function example3($a = true){
return $a;
}

$data1 = example1();
$data2 = example2();
$data3 = example3();

if($data1 && $data2 && $data3){
echo "正常終了";
}

見たいな感じです。

投稿2015/06/21 08:34

takayukiinaba

総合スコア1158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2015/06/21 19:20

ありがとうございます!
guest

0

返り値はどのような場面に使うのですか?
また、返り値はなんのために存在しているのですか?調べても意味がわかりません...

例えば、特定のデータを取得するロジックを考えてみてください。

特定データはIDで取得できます。
function getDataForId($id) {
// ID取得でデータ処理省略

return data;
}

このIDからデータ取得する処理が複数個所で発生する場合を考えてみてください。
関数で返り値をデータを返す場合と、それぞれデータ取得処理を記述する場合、どちらが楽でコード量が少ないでしょうか?
戻り値を返す関数はこのようにプログラムを簡略化する為に考えられた言語仕様や仕組みになります。

返り値は変数でいう値かと思ったのですがどうでしょう?

値の場合もあれば、オブジェクトやクラスなどの参照を返す場合もあります。

もし正しければ、返り値はどこにでも代入できるのですか?

キャストできない場合など、言語制約にひっかからなければ、どこでも代入可能です。

returnの上の文が何行にもなった場合はどうなりますか?

よく分かりませんが、何行もreturn文を書くという事なら、コンパイルエラーになるか、一番最初のreturn文だけ有効になるような動作になると思われます。

投稿2015/06/21 08:31

chiku_

総合スコア1464

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2015/06/21 19:20

ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問