Processing 関数をつくる
はじめに
これまでは、あらかじめ用意されている命令(関数)を使ってきた。
今回は、「自分で関数をつくって使ってみる」ということをしてみたいと思う。
Processingにおける関数
ellipse();やbackground();のような今まで扱ってきた命令は、Processingの開発者があらかじめ用意してくれた関数である。
例えばellipse();は「中心点から決められた距離にある点を全て塗りつぶす」という処理がまとめられていて、僕らはそれに数値(パラメーター)を代入することで利用してきたのだ。
関数はしばしばメソッドと呼ばれる。となるとsetup,drawも関数(の仲間)といえる。実際にはProcessingを使うにあたってこの辺りを厳密に定義することはあまりなく、僕も自信がない。
関数を作る
それでは、さっそく関数を作ってみよう…といっても、今回は自由度が高くて一言に説明するのが難しい。
それを踏まえた上で関数の作り方を抽象的に示してみようと思う。
返り値 名前(入力される変数){
「処理」
return←返り値があった場合
}
である。名前は基本的に自由である。
正直、これだけで理解するのは困難だと思われるので、一つ一つピックアップして説明していこうと思う。
返り値とは
返り値とは、その関数で処理された結果がどのような型で返されるのかを示したものである。つまり、返り値の場所にはProcessingにおける変数の型(intなど)を記述する。
例えば、入力された数字を2倍にして返す関数をつくったとする。
float doubleNumber(int x) {
x = x*2;
return x;
}
この場合、返り値はfloatである。2倍されたxが返ってくる。
返り値を記述する場合は「return」とセットにしてやる必要があり、
返り値は必須ではなく、ない場合(図形を描くだけなど)は代わりに「void」と記述する。setup,drawの「void」はこれである。
入力される変数について
こちらはProcessingにおける変数またはオブジェクトを記述する。
「オブジェクト」については「オブジェクト指向」を考えるときに出てくる概念なので、とりあえずは触れないでおこうと思う。
これらはいわゆるパラメーターのことで、ellipse(x,y,r,l);と記述した時のxやyやrやlである。
関数の使用について
関数を作ることができたら、それをつかってみよう。
void型の場合は、今までつかってきたrect();やtriangle();のように記述することで利用できる。
返り値がある場合、例えば上記の「入力された数字を2倍にして返す関数」はそのまま数値などのデータとして使えるが、変数に代入する形で記述するのが一般的である。
float a;
a = doubleNumber(5);
上記のように記述した場合はaに10が代入される。
ちなみに、関数をつくるときに宣言した変数(この場合はx)とそれを代入する変数(この場合はa)は違う名前でもよいが、型はそろえなけれえばならない。
おわりに
今回の内容については抽象的なことが多く、この説明だけで実際にプログラムに組み込むのは難しいばかりかそのメリットさえ少なく感じられると思う。
他の記事のプログラム中で関数がでてきた際には積極的に言及していこうと思うので、今回の記事は読み流す程度にするのがいいかもしれない。