文章 "MQL5 编程基础:数组"

 

新文章 MQL5 编程基础:数组已发布:

数组连同变量及函数是几乎所有编程语言的组成部分。很多编程新手往往对数组“心存惧意”。听上去不可思议,但这是事实!我可以向你们保证,它们没有什么好可怕的。事实上,数组和普通的变量类似。不考虑符号特性的细节,语句的编写没有太大区别,无论是使用简单变量.

Multidimensional array

数组看上去有些复杂的原因是不是和使用 "[" 和 "]" 有一定的关系?这些符号很少在编程中的数组以外的任何场合使用,因此读者可能不记得它们在键盘上的位置并感到不适。而事实上,您可以轻松记住它们的位置 - 这两个键呈逻辑顺序位于 "Enter" 键的旁边:左括号后面是右括号。

作者:Dmitry Fedoseev

 

总的来说,这篇文章还不错--比编程教科书要好,不那么枯燥,而且相当清晰

我不喜欢这个例子:"使用 OOP 的多维数组"。这个例子的实现很简单,但随后使用这种动态数组的工作却相当 "棘手",对我来说,与其有这样一个可怕的结构,还不如没有这个例子。

Документация по MQL5: Основы языка / Переменные
Документация по MQL5: Основы языка / Переменные
  • www.mql5.com
Основы языка / Переменные - Документация по MQL5
 
这篇文章真的不错,尤其是对初学者来说。
 

这篇文章写得不差,但对CArray 及其后代却只字未提。

初学者可能会认为,要以 OOP 方式使用数组,就需要编写自己的类,但其实这些类早就编写好了。

 

MQL5 编程教程的开头部分已基本完成

唯一的问题是,OOP 上的数组实现看起来很吃力

 
avoitenko:

这篇文章写得不差,但对CArray 及其后代却只字未提。

初学者可能会认为,要以 OOP 方式使用数组,就需要编写自己的类,但其实这些类早就编写好了。

顺便说一句,这也是作者继续撰写系列文章的一个主题。
 
avoitenko:

这篇文章写得不错,但对CArray 及其后代只字未提。

CArray 及其所有后代都应受到谴责。

这种东西应该写在模板上。

弗拉迪克斯

唯一的问题是,在 OOP 上实现数组看起来非常吃力

是有点)

 

对于如何在 OOP 中更好地使用这个数组,有什么建议吗?

我正在尝试用 JavaScript 来实现:

var ar=new Array();
ar[0]=new Array();
ar[1]=new Array();
ar[2]=new Array();

ar[0][0]=1;
ar[0][1]=2;

alert(ar[0][1]);

最大的问题在于,在 JavaScript 中,您可以一次性将一个列表放入一个数组中:

ar[0][2]=Array(131,132,133,134);
alert(ar[0][2][3]);

而在这里是不可能出现这种情况的。因此,无论你怎么看都不会有好的变体。

 
Integer: 有什么建议可以让这个数组在 OOP 上变得更好吗?

我喜欢Yurich 对动态数组的实现https://www.mql5.com/ru/forum/6729/page3 ,我不知道它在性能方面有多高效,但在代码可读性方面是一流的。

 

这篇文章非常好,适合绝对的初学者,也适合刚刚接触 MT5 的经验丰富的程序员。只有最后一节 "使用 OOP 创建多维数组 "最不吸引人。

不过,有一个小错误:

Array indexing order can be determined using the ArrayIsSeries() function:

bool series=ArrayIsSeries(ar);

如果数组的索引顺序相反,函数将返回 true。

这是假的。了解数组索引顺序的函数是ArrayGetAsSeries()

ArrayIsSeries() 用于确定数组是否为时间序列

 

There is only one method that allows you to do a search in an unsorted array

严格来说并非如此,请参阅 "基于哈希值的搜索算法"。但这种算法可能不适用于交易。