この章ではメソッドについて説明します。
メソッドとは引数と言うデータを受け取って、ある一定の処理を行い、戻り値を呼び出し元に返す命令のことを言います。
引数とはメソッドを実行するときにメソッドが使うデータのことを言います。戻り値とは、メソッドを実行した結果、返される値です。
簡単に言いますと「このデータ(これは引数に相当します)を渡すので、この作業をやってくださいね」と命令するとメソッドという機械が作業をしてくれて、その結果(戻り値)を返してくれるというのが一連メソッドの流れです。
例えば「消費税を自動で計算するメソッド」を自分で作りたいとします。
その場合、商品の代金をメソッドに渡すと商品金額に税率を掛けた処理をして、その結果を返すというメソッドを作ることになります。
このような一連の処理を作ることをメソッドを定義すると言います。
通常メソッドはクラス(クラスについては「クラスについて知ろう」で説明します)の中に書きますが、クラスの中ではなくても書くことが出来ます。
クラスの中ではない位置はトップレベルと呼ばれています。これまでの学習ではまだクラスの説明をしていないので、すべてトップレベルで記述してきました。
ここではクラスの中のメソッドではなく、トップレベルでのメソッドの記述方法について説明します。
先ほどの書きましたが引数とはメソッドの中で使われるデータのことです。
引数1を第1引数、引数2を第2引数と言いますが、引数の数はメソッドにより変わります。
〇メソッド名の付け方は基本的には変数の命名規則と同じですが、変数と違って大文字のアルファベットも可能です。
〇引数が複数ある場合はカンマで区切りますが、引数が必要ないメソッドであるならば引数は省略することができます。
実はメソッドは定義しただけでは機能しません。
メソッドを実行するためにはメソッドを呼び出さなくてはいけません。
〇メソッドの呼び出しの中にある引数を実引数と言います。
〇引数が複数ある場合はカンマで区切りますが、引数が必要ないメソッドであるならば引数は省略することが出来ます。
では例をみてみましょう。
このメソッドの中にある引数a,bはこのメソッドが実行されている間だけ有効な引数なので関数の外で出力することは出来ません。これをローカル変数と言います。
このメソッドを呼び出している箇所が
つまり、
この引数の2はメソッドの中の引数aにセットされ、3はメソッドの中の引数bにセットされます。
そして、このメソッドを実行した結果を
ここで注意してほしいことはメソッドの呼び出しよりも、メソッドの定義を後に書かないでください。
つまり、以下の例はエラーになります。
次は仮引数にあらかじめ初期値を設定する方法について説明します。
初期値を設定するすると、メソッドの呼び出しの際に実引数を設定する必要はありません。
では例をみてみましょう。
つまり、aが2、bが3と、仮引数が設定してありますので、この値が使われます。
このように仮引数に値が設定してあれば実引数を省略することが出来ます。
結果は5が出力されます。
仮引数に初期値を設定した場合でも、実引数を設定しても問題ありません。
その場合は実引数が使われます。
では例をみてみましょう。
次の例は仮引数を2つ設定して、実引数を1つしか設定しなかった場合はどうなるか見てみます。
bはそのまま3が使われます。
結果は11です。
次は実引数と仮引数の数が合わない場合の例です。
結果は次の通りエラーです。
次は仮引数を設定する場合の注意点について説明します。
では例をみてみましょう。
しかし、メソッド内の引数の設定は右端からしてください。
つまり
次は実引数に変数を使った例について説明します。
次はメソッドに配列を渡す方法について説明します。
では例をみてみましょう。
このようにメソッドの実行結果をメソッドの呼び出し側に返すにはreturnを使います。
具体的には
例では
この例の流れを図にしましたので参考にしてください。
では例をみてみましょう。
配列である実引数の先頭に「*」を付けると仮引数では配列の要素が分解されて渡されます。
メソッド側には配列の要素の数だけ仮引数を用意してください。
2は仮引数aに入り、3は仮引数bに入り、8は仮引数 cに入ります。
結果は「答えは13」です。
前の例では実引数の先頭に「*」を付けましたが、今度は仮引数にも「*」を付ける例を紹介します。
仮引数の変数aには
配列の実引数に「*」を付けて渡して、仮引数では「普通の変数と「*」を付けた変数」で受け取ると配列の要素を分けて代入することができます。
その後、配列の要素をfor文で処理しています。
複数の変数を返す時にはカンマで区切って記述してください。
その戻り値をどのように受け取るかと言いますと、
この方法は複数の値を一度で受け取ることができます。これを多重代入と言います。
この例では以下の箇所です。
結果は以下の通りです。