MQL5超入門(7)/三項演算子とは
昨日に引き続いて、MQL5 超入門です。
MQL4 を知っていて、C 等の他の言語を知らない人が MQL5 で他人のコードを読む時に戸惑う表現のひとつに、三項演算子があります。
具体例は、
double true_range = (High==Low) ? 0 : (Close-Open)/(High-Low);
で、この式は 変数 true_range に値を代入することが目的だと想像がつきますが、おそらく右辺が意味不明でしょう。
MQL4 で、ほぼ同等の結果を得るには、以下のように書きます。
double true_range; if(High==Low) { true_range = 0; }else{ true_range = (Close-Open)/(High-Low); }
これで推測できると思うのですが、最初の式は、
double true_range = (High==Low) ? 0 : (Close-Open)/(High-Low); double true_range = 判定条件 ? 真の時に代入する値 : 偽の時に代入する値 ;
という意味を示していて、
判定条件が、High==Low
真の時に代入する値が、0
偽の時に代入する値が、(Close-Open)/(High-Low)
という3項を?と:で区切って出来上がっているので、三項演算子といいます。
double x_range = 条件A ? 1 :(条件B ? 2 :(条件C ? 3 :0 )); ↓分かり易く改行して書くと… double x_range = 条件A ? 1 : 条件B ? 2 : 条件C ? 3 : 0 ;
と書くこともあります。
この式の意味は、条件Aを満たしたら 1 ,条件Bを満たしたら 2 ,条件Cを満たしたら 3 ,それ以外は 0 を代入する。になります。
(三項演算子を入れ子にする場合は、改行して書きましょう..)
if ( ){ } else { } よりスマートに書けそうだと感じた人は使ってみてもよいかもしれません。