Pineスクリプト道場は、Pineスクリプト入門からコード作成までをサポートする初心者の方のための記事です。
Pineスクリプトをある程度使える方は「Pineスクリプトの学校」にて記事を書いておりますのでそちらをどうぞ。
1、「関数」とは何か?
ズバリ、関数とは
任意の値を何かに変換してくれる道具のこと
だと覚えてもらったら良い。
では詳しく説明していく。
2、軽く頭の体操!
「え、いきなり頭の体操かよ!」と言わずにクイズに付き合って欲しい。
以下のハテナボックスは、何か値を入れるとある規則に従って値を出すようになっている。
では、このハテナブロックはどのような規則に従って値を出しているだろうか。答えは後ほど書くことにする。
第1問
これは比較的簡単だろう。
第2問
これも簡単かも。
第3問
「いきなりムズい!(粗品風に)」
これは相当難しい。
クイズの答え
第1問
ハテナボックスは「入力した値の2乗を出力」している。
第2問
ハテナボックスは「入力した値の1/2を出力」している。
第3問
ハテナボックスは「入力した2進数の値を10進数に変換して出力」している。
これにて頭の体操は終了!
3、結局「関数」「引数」「戻り値」とは?
実は、本日の内容の半分は終わった。先ほどの頭の体操では「入れる値」「ハテナボックス」「出る値」の3つが出てきたが、そんな呼び方ではダサいのでプログラミングにおいては、それぞれを「引数(ひきすう)」「関数(かんすう)」「戻り値(もどりち)」と呼んでいる。
図で表すと以下のようになる。
少し堅苦しく書くとこうなる。
「関数」とは、与えられた引数をもとに戻り値を出すもの
「引数(ひきすう)」とは、関数に与える値のこと
「戻り値(もどりち)」とは、関数が出す値のこと
厳密にいうと、プログラミングにおいて「関数」とは、ある一塊の処理を行うまとまりのことである。そのため、引数が必要ない関数も多く存在する。例えば「パソコンの電源を切る」という関数があるとすれば、これを実行すればパソコンの電源を切ってくれる。この場合、何かの値を別の値に変換しているわけではなくて、ただ単に「パソコンの電源を切る」という動作を一つのまとまりとして関数にしているだけであるため、もちろん引数なども不要だ。
ただし、Pineスクリプトは基本的に数を扱う言語なので「関数」は与えられた引数をもとに戻り値を出すものだと覚えてもらって構わない。
4、Pineスクリプトではどのように記述するの?
(1)関数の定義方法
では、実際に関数を作ってみよう。関数を作ることを「関数を定義する」という。
Pineスクリプトでは以下のように記述する。(_はスペースを表す)
関数名 (引数1,引数2,・・・) =>
____実行する処理
____戻り値
関数名
関数につける名前のことだ。例外を除きどんな名前をつけても良いが、何をする関数なのか後からわかるようすると良い。
引数
かっこ'()’の中に関数が受け取る引数を書く。引数が2つ以上ある場合は、カンマ’,’で区切る。
=>
関数を定義する時にはこの矢のような記号を記述する。
ちなみに、このように=>を使って関数を定義する方法をアロー関数式という。アローとは「矢」を意味する。
戻り値
関数の戻り値は、このように関数を記述した最後の行に記述する。
少々イメージしにくいので、実際に記述したプログラムを見てみよう。
以下に、引数の二乗を戻り値として返す「nijou」、引数の半分を戻り値として返す「half」、二つの引数の積を返す「multi」の三つの関数を定義した例を示す。
では、これらの関数をどのように使用するのかを次に説明する。
(2)関数の使用方法
関数を使用するには、
関数名 (引数1,引数2,・・・)
と記述する。先ほどと同じように、引数が複数ある場合はカンマ’,’で区切る。
では、先ほど記述した三つの関数を使用してみよう。
①変数aに4を二乗した値を代入する。
a = nijou(4) //aには16が入る
②変数bに16の半分の値を代入する。
b = half(16) //bには8が入る
③変数cに4と8の積を代入する。
c = multi(4,8) //cには32が入る
5、まとめ
では、今回の記事をまとめると、
「関数」とは、与えられた引数をもとに戻り値を出すもの
「引数(ひきすう)」とは、関数に与える値のこと
「戻り値(もどりち)」とは、関数が出す値のこと
関数の定義を行うには、
関数名 (引数) =>
____実行する処理
____戻り値
で定義し、関数を使用するには、
関数名 (引数1,引数2,・・・)
で呼び出す。
次回は、「演算子」とは何かについて説明する。
ぜひお楽しみに!
本記事を気に入っていただけたらブックマークお願いします!また、ツイッターもやってるのでフォローよろしくお願いいたします!
Twitter : makoto(@Makoto_beginner)
また、記事中で不明なことや間違い等ありましたら以下のコメント欄からコメントいただけると幸いです。
皆様のコメントをもとにどこよりもわかりやすいブログを目指していきます。