从头开始自学MQL5语言 - 页 32

 
#property script_show_inputs
input string inA = "достаточно времени";
input string inB = "достаточно терпения";
const string a = "достаточно времени";
const string b = "достаточно терпения";

//+------------------------------------------------------------------+
void OnStart()
{
   if(inA == a && inB == b)
   {
      Print("я выучу язык MQL 5");
   }
}
//+------------------------------------------------------------------+

UPD。

我不喜欢字符串,幸运的是MQL允许以注释的形式创建输入变量和集合的解释,这样更好。

#property script_show_inputs
enum E_STATE
{
   STATE_A/*достаточно времени*/,
   STATE_B/*НЕ достаточно времени*/,
   STATE_C/*достаточно терпения*/,
   STATE_D/*НЕ достаточно терпения*/,
   STATE_E/*достаточно денег*/,
   STATE_F/*НЕ достаточно денег*/
};
input E_STATE inA = STATE_A;
input E_STATE inB = STATE_C;

//+------------------------------------------------------------------+
void OnStart()
{
   if(inA == STATE_A && inB == STATE_C)
   {
      Print("я выучу язык MQL 5");
   }
   else
   {
      Print("я НЕ выучу язык MQL 5");
   }
}
//+------------------------------------------------------------------+
 
Igor Makanu:

UPD。

不喜欢字符串,好在MQL允许将输入变量和集合的解释作为注释来创建,这样更好。

酷!这么简单的任务,却有这么多不同的解决方案!这就是我们的工作。谢谢你。

问候,弗拉基米尔。

 
MrBrooklin:

很好!这么简单的任务,却有这么多不同的解决方案!这就是我们的工作。谢谢你。

真诚的,弗拉基米尔。

现在,遵循逻辑而不是练习句法会更正确。从逻辑上看,"是否会学习语言 "这个问题的结果只能返回一个计算与此相关的一些参数的函数。由于该函数必须返回 "是"/"否 "的结果,所以它被声明为bool类型。你可以直接从if()条件中调用该函数

如果(Enough_time() && Enough_patience())Print("I will learn the language!");

else Print("我不会学习这门语言......")。


现在,考虑一下功能的内容。

 
Реter Konow:
唉,这是个误导,把你引向一条未知的学习之路。"状态 "和这个枚举有什么关系?这是一个公平竞争环境下的虚构。

现在,遵循逻辑而不是练习句法会更正确。从逻辑上看,"会不会学语言 "这个问题的结果只能由一个计算与之相关的一些参数的函数来返回。由于该函数必须返回 "是"/"否 "的结果,所以它被声明为bool类型。该函数 可以直接从if()条件中调用

如果(Enough_time() && Enough_patience() )Print("I will learn the language!");

else Print("唉,我不会学习这门语言......")。


现在,考虑一下功能的内容。

你在挑剔我,当然这个评论是不完整的,A中的 第一个变量是应该的,是执行的条件,可以这么说,第二个a,是在事实上))))))))))。而这就是为什么inA是通过一个实例进入的,而且是不可改变的,而变量a....尽管是的,它不应该是一个常量变量,而应该是一个静态的或者只是一个文本类型))))。

但它仍然是有意义的)

 
MrBrooklin:

很好!这么简单的任务,却有这么多不同的解决方案!这就是我们的工作。谢谢你。

问候,弗拉基米尔。

还有更多的模式...

#property script_show_inputs

enum EStateTime
{
   TimeOk=0/*достаточно времени*/,
   TimeFail/*НЕ достаточно времени*/
};
enum EStatePatience{
   PatienceOk=0/*достаточно терпения*/,
   PatienceFail/*НЕ достаточно терпения*/
};
enum EStateMoney{
   MoneyOk=0/*достаточно денег*/,
   MoneyFail/*НЕ достаточно денег*/
};
input EStateTime time = TimeOk;
input EStatePatience patience = PatienceOk;
input EStateMoney money = MoneyFail;

//+------------------------------------------------------------------+
void OnStart()
{
   if(Check(time) && Check(patience))
   {
      Print("я выучу язык MQL 5",(Check(money)?NULL:" и это не зависит от денег"));
   }
   else
   {
      Print("я НЕ выучу язык MQL 5");
   }
}
//---------------------------------------------------------------------
template<typename T>
bool Check(T condition){
   return condition==0;
}

是的,也有一个三元运算符)。

从这条路(理解和知道如何写)开始,实际上就是开发者的路。IMHO

Документация по MQL5: Основы языка / Операторы / Условный оператор ?:
Документация по MQL5: Основы языка / Операторы / Условный оператор ?:
  • www.mql5.com
В качестве первого операнда – "выражение1" – может быть использовано любое выражение, результатом которого является значение типа bool. Если результат равен , то выполняется третий операнд – "выражениеЗ". Второй и третий операнды, то есть "выражение2" и "выражениеЗ", должны возвращать значения одного типа и не должны иметь тип void. Результатом...
 
Реter Konow:
唉,这是一种错误的学习方式,会让你一无所获。"状态 "和这个枚举有什么关系?这是一个公平竞争环境下的虚构。

现在,遵循逻辑而不是练习句法会更正确。从逻辑上看,"是否会学习语言 "这个问题的结果只能由一个计算与之相关的一些参数的函数来返回。由于该函数必须返回 "是"/"否 "的结果,所以它被声明为bool类型。该函数 可以直接从if()条件中调用

如果(Enough_time() && Enough_patience() )Print("I will learn the language!");

else Print("我不会学习这门语言......")。


现在,考虑一下职能的内容。

你好,彼得!我当然会的!只是,这个问题被问到了。

"......控制问题:'足够的时间'--这个变量可以是什么类型 而不会有编译器的警告......"。

这就是我想回答的问题。特别感谢你的榜样!


最好的问候,弗拉基米尔。

 
Valeriy Yastremskiy:

你在挑剔它,当然,评论是不完整的,A中的 第一个变量是它应该有的,可以说是执行的条件,第二个A,是它实际上是))))))))))。而这就是为什么inA是通过实例输入的,而且是不可改变的,而变量a....尽管是的,它不应该是一个常量变量,而应该是一个静态的或者只是一个文本类型))))。

但它仍然是有意义的)

好吧,也许我太挑剔了,但现在枚举对学生来说仍然是多余的。有必要记住关于课程的一致性。那么我们就马上写出这个类吧。))))
 
Реter Konow:
好吧,我可能是在挑剔你,但现在对一个学生来说,列举是不必要的。你必须记住关于课程的一致性。那么我们就马上写出这个类吧。))))

不,不,不,不!!!。我的脑子里已经乱成一团了!

尊敬的弗拉基米尔。

 
MrBrooklin:

你好,彼得!我一定会考虑的!只是整个问题的关键是,这个问题被提出来了。

"......控制问题:'足够的时间'--这个变量可以是什么类型,这样就不会出现编译器警告......"。

这就是我想回答的问题。


真诚的,弗拉基米尔。

是的,你好。没错,这正是问题所在,但你还没有正确回答,因为在条件内容的背景下,字符串类型是不正确的。编译器不会产生错误信息 或警告,但该条件的意义是有缺陷的。
 
MrBrooklin:

不,不,不,不!!!。我的脑子里已经乱成一团了!

尊敬的弗拉基米尔。

这就是我所说的。现在不需要枚举和不必要的语法。