関数(メソッド) つづき |
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
えっと、定義の説明は
こんな感じだな。
後は、関数のブロックの
中に実行したい処理を
書いていこう。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
関数のブロックの中に
メイン関数に
書いてた処理を
書き移せばいいんだね。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
 |
これで
分離で
きたんだ。 |
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
あっ、なぽちゃん。
戻り値の型がvoidじゃない場合、
必ず戻り値を戻さないといけない
んだよね?
どうやって戻すの? |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
 |
はいっ、質問! |
|
お、
いいぞ! |
 |
|
|
|
|
|
|
|
|
|
|
|
 |
|
|
|
|
 |
 |
 |
|
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
return文(りたーんぶん)は
関数を終了して
呼び出し元に処理を戻す
命令だ。
同時に戻り値を返すことも
できるよ。
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
|
|
|
|
 |
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
呼び出し元に
リターンするんだね。
戻り値をvoid以外で定義した
場合は、必ず値を返さないと
いけないんだよね。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
実行した時点で処理を
呼び出し元に戻すよ。
その時点で
関数終了ってことね。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
break文みたいだね。
そこから下は
実行されないんだ。 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
return文の書き方は、
returnを書いて
戻り値の変数か値を書く。
間は半角スペースね。
「戻り値の型」で定義したのと
同じ型の値を
1つだけしか戻せないよ。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
|
 |
「戻せるのは
1つだけ」っと。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
戻り値が無い場合でも
returnは使える。
戻り値の型がvoid型の場合ね。
その場合、
returnだけを書くだけ。
処理がその時点で呼び出し元に
戻るのは同じだよ。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
やっぱり
終わりは
セミコロンね。 |
 |
|
 |
便利かも。 |
|
|
|
 |
|
 |
|
return文は戻り値が無い場合も使える
(戻り値の型がvoid型の場合)
・・・ |
|
|
|
|
|
private
static void test(){ |
|
|
|
|
|
|
|
return; |
|
|
|
|
|
|
|
} |
|
・・・ |
|
|
|
|
戻り値は書かないこと |
|
|
 |
|
 |
|
|
返らないルートが
あると、IDEが
教えてくれるけどね。 |
 |
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
return文は関数の中で
いくつでも使える。
戻り値もバラバラでいい。
注意しなくちゃいけないのは
if文などの「条件」で戻り値を
返す場合だ。
この場合、
値が返らないルートがあると
エラーになるよ。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
どのルートでも
必ず値を返さないと
だめなんだね。 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
 |
気を
つけないと。 |
|
|
|
 |
|
 |
|
戻り値に制御文を使う場合の注意
(戻り値の型がvoid以外の場合)
・・・ |
|
|
|
|
|
private
static int test(){ |
|
|
|
|
|
|
|
int
a = 1; |
|
|
|
|
|
|
|
if(a
== 1){ |
|
|
|
return
a; |
|
|
|
}else
if(a
== 10){ |
|
|
|
return
10; |
|
|
|
} |
|
|
|
|
戻り値が戻らないルート |
|
|
} |
|
・・・ |
|
|
|
|
全ての処理のルートで値を戻すように作る必要がある。
例の場合、
変数aの値が1か10「以外」の場合、値が戻らないルートがある。
そのためエラーで実行できない。
実際にそのルートを通るかどうかは関係なくエラーになる。 |
|
|
|
 |
|
 |
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
returnを実行するタイミングは
if文とかの条件によって
変えられるからね。
いろいろ試してみよう。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
breakとかと同じで
条件によって
リターンする値を
変えたりできるんだね。 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
 |
はいっ。 |
|
|
たりーん文を
使えば
たりーんを
強制的に
ログアウト
できる・・・・ |
 |
|

|
残念でした!
そんなの
ありませーん!
|
|
|
やっぱり
たりーんの
自覚あるんだ。
ウヒヒ |
 |
|
 |
もうー!
違うー! |
|
|
|
 |
|
 |
|
return文 まとめ
呼び出し元に処理を戻す事ができる |
実行された時点で処理を呼び出し元に戻す。
・return文は何個でも記述できる。
|
|
|
戻り値を戻す事ができる |
戻り値の型がvoid型以外の場合、呼び出し元へ戻り値を渡すことができる。その場合必須。必ず戻り値を戻す事。
・値は、戻り値の型と同じ型にすること。
・呼出元へ戻せる値は1つだけ。
|
|
|
|
|
|
 |
|
 |
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
でも、戻り値だと1個しか
値を戻せないんだよね。
もっとたくさん戻せると
いいのにね。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
あー、確かに、
戻り値だと1個しか
戻せないけどね。
関数から複数の値を
同時に戻す方法は
いろいろあるんだよ。
それも追々見ていこうな。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
そっか
あるんだ。 |
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
以上。
関数の定義の仕方
はこんな感じ。
次は関数の呼び出し方を
見てみよう。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
今回、どんだけ
あるのよ。
はあー・・・
お疲れ三段腹の
こと。。。 |
 |
|
 |
それはメタボの
なぽちゃんでしょ!
お疲れ様
だけど。。。 |
|
|
|

画像をクリックで拡大します |
|