失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > switch语句判断范围_MQL5从入门到精通【第四章】(一)条件判断语句

switch语句判断范围_MQL5从入门到精通【第四章】(一)条件判断语句

时间:2021-03-25 23:14:24

相关推荐

switch语句判断范围_MQL5从入门到精通【第四章】(一)条件判断语句

文档日期:12月7日

# 判断语句

程序的基础功能之一就是做判断。判断语句通过评估条件的真伪作出决定。MQL5中有三个条件判断语句:if - else,三目操作符,和switch - case语句。

## if语句

前面章节其实我们已经介绍过了,程序内最常用。if语句内可包含许多业务逻辑。

bool c = true;if (c == true){Print('yes,true!');}

上面的语句当然是真的。

说一个语法糖。就是如果if语句内只有一条语句,那连大括号都可以省了。开头给个tab即可。

bool c = true;// 换一行写if(c == true)Print('yes,true!');// 连着写if(c == true) Print('yes,true!');

效果是一样的。语句以分号结束。这个特性,很多编译型语言都有。每个if少写一对大括号,一个文件能省几十个,一天能省不少时间,几年下来就能大神了!!哈哈~~

int a = 2;if(a > 1) Print('yes');if(a < 3) Print('of course');

这样写,很省心啊。

## else操作符

if语句判断为真执行,那么其他情况呢。条件不成立的其他情况呢?我们也得处理,else字句就是做这个的。

bool c = false;if (c==true) Print('yes');else Print('no');

看到没有,一个if,一个else,把所有的情况都考虑好了,这叫滴水不漏。复杂点儿的例子。说学生成绩60分以下输出不及格,60-80分输出及格,80-100分,优秀。

double score = 78.5;if(score < 60)Print('不及格');else if(score < 80)Print('及格');elsePrint('优秀');

条件自上而下依次执行,遇到条件满足,就执行其中的语句。注意,如果判断条件写的不合适,有可能接连触发好几个哦。

## 三目运算符

为了简化if-else语句,发明了这个语法糖。

bool c = true;string r = c == true ? 'yes' : 'no';Print(r); // = yes

也即是?之前是判断条件,如果成立,执行:左边的句子,不成立只有:右边的句子。其实相当于:

bool c = true;string r = '';if(c==true){r = 'yes';}else{r = 'no';}Print(r); // = yes

上述两段执行效率一样。只是三木运算符,把变量声明,条件判断,语句赋值这三项,合并到一行执行,在编程风格上简洁了不少。可以加大使用力度。

## 分支语句 switch - case

如果判断情况较多,写一堆if不方面,容易形成一大堆乱糟糟的代码。所以switch-case语句。注意,switch-case也不是最好的结构哦。在最佳实践中,很多有名的github上的高评代码库,if-else用的还是最多。为何?方便维护。switch改起来太费劲了。体验不好。而且处处得break,你不跳出,谁知道他给你执行那一段?oh sh!t。

int x = 1;switch(x){case 1:Print("x is 1"); // 输出: x is 1break;case 2:Print("x is 2");break;default:Print("x is not 1 or 2");}

switch语句要求case列举出的是其判断语句的所有可能值,当然还有个default用于处理列举不出来的值。

我们不是写航天代码的,一般控制不了全部的局面,switch用起来就不爽了。所以我个人不推荐。因为你稍不留神,就能写出这些一撸到底的代码:

int x = 1;switch(x){case 1:case 2:case 3:Print("x is 1, 2 or 3"); // 输出: x is 1, 2 or 3break;default:Print("x is not 1, 2, or 3");break;}

看见没,case=1,2,3,一次往下走,只要命中一个,都得把case里的语句走一遍,直到break!

大多数时候,if-else工作的很好的,switch-case给你一个额外的选项,多一个实现的方法。下面举例,比如是给出图表周期,分钟数,如果60分钟=1小时,240分钟=4小时,1440分钟=1天等等:

int period = _Period;string printPeriod;switch(period){case 60:printPeriod = "H1";break;case 240:printPeriod = "H4";break;case 1440:printPeriod = "D1";break;default:printPeriod = "M" + period;}

if-else也可以写,无非使用if(period==60)这样的格式依次判断即可,不具体写了。

如果觉得《switch语句判断范围_MQL5从入门到精通【第四章】(一)条件判断语句》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。