戻り値のない関数
これまでは、何らかの引数を受け取って、処理した結果を戻り値として返すような自作関数を扱ってきました。 これは、数学における関数と同じなのでイメージがしやすいでしょう。
プログラミングの関数では戻り値のない関数があります。 引数を受け取って、その内容に応じてコンソールへの表示や図形の描画を行ったりする場合がこれに該当します。 これらの場合は、処理した結果を呼び出し元に返却する必要がないため、戻り値のない関数となります。
戻り値のない関数は、戻り値の型を void
型として宣言します。
戻り値のない関数は、return
で何らかの値を返すことはありません。
以下のプログラムでは、パンダの絵を描画する関数 drawPanda
を宣言し、画面に 3 体のパンダを描画しています。
void setup() {
size(800, 600);
noLoop();
}
void draw() {
drawPanda(200);
drawPanda(400);
drawPanda(600);
}
void drawPanda(int centerX) {
// Ears
fill(0);
ellipse(centerX - 50, 260, 40, 40);
ellipse(centerX + 50, 260, 40, 40);
// Face
fill(255);
ellipse(centerX, 300, 120, 120);
// Black eyes and nose
fill(0);
ellipse(centerX - 30, 300, 40, 40);
ellipse(centerX + 30, 300, 40, 40);
ellipse(centerX, 320, 10, 10);
// White eyes
fill(255);
ellipse(centerX - 20, 305, 10, 10);
ellipse(centerX + 20, 305, 10, 10);
}
実行結果は以下のようになります。
引数のない関数
引数に応じて処理内容を変える必要のない関数は、引数のない関数となります。 引数のない関数では、乱数やグローバル変数等を使用しない限りは常に同じ処理結果となります。 常に同じ処理をする関数だと意味がないようにも思えますが、ひとまとまりの処理に名前をつけて関数化することは、プログラムの可読性を高める上で有用です。
以下は現在の時刻を表示するプログラムです。
now
関数は現在の時刻を表す文字列を返す関数であり、引数が必要ないため引数のない関数となっています。
String now() {
return "" + hour() + ':' + minute();
}
void setup() {
noLoop();
}
void draw() {
println(now());
}
戻り値と引数の両方がない関数もあり得ます。 必要に応じて適切に関数の設計を行いましょう。