前回はelse文と else if文 について解説しました。
改めて前回の内容をおさらいをしておくと、
ということをお伝えしました。
今回は 三項演算子についてお話ししたいと思います。
・・・が!その前にあらかじめお断りしておくと、プログラミング初心者の方は正直今回の記事は読み飛ばしても構いません。
理由はif文 - else文でまったく同じような処理を行う記述が可能だからです。
ネット上に公開されているソースコードでも三項演算子を使っている例は多くありません。
MQL4や他のプログラミング言語を経験したことがある方ならともかく、初心者の方にとっては、ただでさえ色んな事を覚えなくてはいけない中で、わざわざあまり使われていない記述知識を身につけるのは大変な重荷です。
余裕がある方、大変さより興味の方が勝る方のみご覧いただければ結構です。
「じゃあ、そもそも書かなければいいじゃないか!(; ・`д・´)」
と思われる方もいるかもしれませんが、私としてはそれはしたくなかったんです。
このサイトでは、ただ単に「最速でEAを作る」ことを目的とするのではなく、訪問者の方がMQL5を一つのプログラミング言語として網羅的に調べられるようにしたい!という想いがありました。
私は2021年から、MQL4とMQL5を学び始めましたが、それまで他のプログラミング言語は触った事さえありませんでした。
だから、いざMQL5を学ぼうとしても1から網羅的に学べるような情報が殆どなかったんです(講座記事の第0回でも書いていますが、それがこのサイトを作るきっかけでした)
また、確かに三項演算子はあまり使われる頻度は高くない一方で、MQL5公式リファレンスで公開されている膨大な記事群や、標準ライブラリーには普通に使われている構文でもあります。
三項演算子の知識があれば、それらの恩恵を受けることができるので、初心者の方がある程度知識がついたときに、再度この記事に戻ってきてくれることを願って書いています。
では、前置きが長くなりましたが、三項演算子の説明に入ります。
三項演算子(ternary operator)とは?
if文の講座記事でも軽く触れましたが、
三項演算子も if文 や else文と同じく、条件演算子(~したら・・・する、という条件と処理を担う記述群)の1つになります。
具体的にコードで見ていきましょう↓
void OnStart()
{
//変数「varBool」を宣言し、true を代入
bool varBool=true;
//三項演算子の結果を格納する変数「result」を宣言し、falseを代入
bool result=false;
//三項演算子の結果を格納
result=varBool? true:false;
//ログ出力
Print(varBool);
//trueがログ出力される
}
サンプルコードの中の、
varBool? true:false;
の部分が三項演算子です。
順にみていきましょう。
三項演算子(ternary operator)の記述方法
三項演算子は3つのセクションで構成されています。
最初のセクションは
varBool?
の部分です。
最初のセクションでは、条件文(「正しい(true)か 「正しくない(false)」かを判定する値・算式)を記述します。if文の if()にあたる部分ですね。
文章で説明すると
条件判定に使う値、もしくは算式を書き、その右にクエスチョンマーク(?)を記述する
ということになります。
varBool?
//↑変数「varBool」を条件判定に使う要素に設定
2つ目のセクションが
true:
の部分です。
ここでは最初のセクションで記述した条件文が「正しい(true)」だった場合の実行内容を記述します。
実行内容の記述が終わったら、コロン(:)で区切ります。
varBool?true:
//↑変数「varBool」を条件判定に使う要素に設定
//条件判定が「true」だったら、右辺の値をtrueにする。
最後のセクションは、
false;
の部分です。
ここでは最初のセクションで記述した条件文が「正しくない(false)」だった場合の実行内容を記述します。
このセクションで、三項演算子の記述は終了なので、締めくくりにセミコロンを置きます。
varBool?true:false;
//↑変数「varBool」を条件判定に使う要素に設定
//条件判定が「true」だったら、右辺の値をtrueにする。
//条件判定が「false」だったら、右辺の値をfalseにする。
改めて、日本語訳にしてまとめると
「もし、varBoolの値が「true」だったら、右辺の値をtrueにする。「false」だったら、右辺の値をfalseにする。」
という意味になります。
変数「varBool」にはtrueが代入されているので、必然的に右辺の値は「true」となり、左辺の変数「result」に代入される値は、「true」になる
という流れです。
//もしvarBoolの値がtrueなら、変数resultにtrueを代入する。
if(varBool==true)result=true;
//そうでないなら(varBoolの値がfalseなら)、変数resultにfalseを代入する。
else result=false;
このように、
三項演算子のメリットは、if–else文に比べて記述するボリュームを少なくできることです。
とはいえ、繰り返しになりますがif–else文でも同じ処理を行う記述はできる訳なので、無理して使うものでもありません。最終的には記述や使い勝手の好みでどちらの記述方法を選択するかは決めればよいと思います。
まとめ
今回は 三項演算子 について解説しました。
今回の記事では以下のことを学びました
- 三項演算子は3つのセクションで構成される。
- 最初のセクションでは、条件文(「正しい(true)か 「正しくない(false)」かを判定する値・算式)を記述する。
- その際、最初に条件判定に使う値、もしくは算式を書き、その右にクエスチョンマーク(?)を記述する
- 2つ目のセクションでは、最初のセクションで記述した条件文が「正しい(true)」だった場合の実行内容を記述する。
- その際、実行内容の記述が終わったら、コロン(:)で区切りを入れる。
- 最後のセクションでは、最初のセクションで記述した条件文が「正しくない(false)」だった場合の実行内容を記述する。
今回は以上になります。
最後までお読みいただきありがとうございました<m(__)m>
コメント