文章 "掌握 MQL5:从入门到精通(第三部分)复杂数据类型和包含文件"

 

新文章 掌握 MQL5:从入门到精通(第三部分)复杂数据类型和包含文件已发布:

这是描述 MQL5 编程主要方面的系列文章中的第三篇。本文涵盖了上一篇文章中未讨论的复杂数据类型。这些包括结构、联合、类和“函数”数据类型。它还解释了如何使用 #include 预处理器指令为程序添加模块化。

本文中,我将描述程序员如何创建复杂的数据类型:

  • 结构 
  • 联合
  • 类(初学者水平)
  • 允许将变量名用作函数的类型。这允许将函数作为参数传递给其他函数。

本文还介绍了如何使用 #include 预处理器指令包含外部文本文件,以确保我们的程序模块化和灵活性。让我提醒你,数据可以用不同的方式组织,但编译器必须始终知道我们的程序需要多少内存,因此在使用数据之前,必须通过指定其类型来描述它。

作者:Oleh Fedorov

 

我是一名初学者,已经学习了编程的 基础知识。我读了 你的下一篇文章,得出一个结论:一个完全没有任何知识的初学者不会从这篇文章中理解任何东西。这只是我的个人观点,并不代表真理。

让我们以文章的结构 部分为例。开头很好,也足够清晰。你讲述了结构的用途,并展示了如何创建结构。然后 "砰 "的一声,出现了新代码!

IntradayTime dealEnterTime;

dealEnterTime.hours = 8;
dealEnterTime.minutes = 15;
dealEnterTime.timeCodeString = "GMT+2";

我特意强调了这部分代码。一个零基础的初学者应该从这行代码中理解什么?这对他有什么用?我已经理解了,但对于零基础的初学者来说,这又是一个难以理解的代码片段。因此,最好能对每一行进行描述和充分解释。否则,这篇文章就不是写给初学者看的,而是写给高级程序员看的。

弗拉基米尔

 
MrBrooklin #:

我是一名初学者,已经学习了编程的 基础知识。我读了 你的下一篇文章,得出一个结论:一个完全没有任何知识的初学者不会从这篇文章中理解任何东西。这只是我的个人观点,并不代表真理。

让我们以文章的结构 部分为例。开头很好,也足够清晰。你讲述了结构的用途,并展示了如何创建结构。然后 "砰 "的一声,出现了新代码!

我特意强调了这部分代码。一个零基础的初学者应该从这行代码中理解什么?这对他有什么用?我已经理解了,但对于完全没有知识的初学者来说,这又是一个难以理解的代码片段。因此,最好能对每一行进行描述和充分解释。否则,这篇文章就不是写给初学者看的,而是写给高级程序员看的。

弗拉基米尔

是我的错觉--还是我在三行之前创建的就是这个结构?而两行前我解释说这是一种数据类型?这是否意味着这种 类型的使用方法与其他类型相同?(真的,这里应该涉及到逻辑,是的;-))。

虽然你可能是对的,但至少在类型上加个注释也无妨....。谢谢。

 
void OnStart()
类 PrivateAndPudlic
}
private:
int a;
public:
int b;
};
privateAndPudlic myVariable;
//myVariable.a = 5; //编译器错误!

myVariable.b = 10; //没关系,你可以这样做

编译时出错了。能告诉我哪里出错了吗?

 
AKHMED Asmalov #:
void OnStart()
隐私和隐私类
}
private:
int a;
public:
int b;
};
PrivateAndPudlic myVariable;
//myVariable.a = 5; //编译器错误!

myVariable.b = 10; //没关系,你可以这样做。

编译时出错了。能告诉我哪里出错了吗?

很抱歉延迟回复。

这个示例中的代码并不完整。要使其正常工作,您需要在函数内部的 某个地方使用 myVariable 变量。例如

  class PrivateAndPudlic
   {
  private:
     int a;
  public:
     int b;
   }; 

 PrivateAndPudlic myVariable; // 全局变量

void OnStart(){ // 对操作的所有调用(此处为赋值)必须只在函数内部进行
  //myVariable.a = 5; //编译器错误!

   myVariable.b = 10; //没关系,没关系
}

嗯,你在重印时把括号转了个方向(把结尾的"}"换成了开头的"{" );-)

 
Oleh Fedorov #:

很抱歉延迟回复。

这个示例中的代码还不太完整。要使其正常工作,您需要在函数内部的 某个地方使用 myVariable 变量。例如

好吧,你在重印时把括号转过来了(没有用开头的"{",而是用了结尾的"}");-)

嗯,或者像文章中描述的那样:

void OnStart(){

class PrivateAndPudlic
 {
  private:
     int a;
  public:
     int b;
   }; 
 PrivateAndPudlic myVariable;
 
//myVariable.a = 5; //编译器错误!

 myVariable.b = 10; //没关系,没关系

}