在MT5中强制清算阵列? - 页 3

 
Vladimir Karputov:

未能初始化阵列完全是kodopistael的错。在你自己的环境中寻找错误。重建你的算法。

没有错误。

在声明过程中自动用零进行数组初始化 的功能被简单地禁用。为什么?- 未知。正因为如此,你必须在使用前手动清除该阵列。这并不总是很方便。

 
Реter Konow:

没有错误。

刚刚删除了在声明时用零自动初始化数组的 功能。为什么?- 未知。正因为如此,你必须在使用前手动清除该阵列。这并不总是很方便。

你想要什么?以 "4 "的风格漫不经心地写作?不顾一切地查询不存在的索引?希望有一个为你初始化数组的 "人"?

MQL5将强烈谴责这种业余人员,所以他们没有任何懈怠。从一开始就学会正确的写法:如果你已经创建了一个数组,你必须绕过所有的索引,并填充它们。如果你不想一下子填满它们--随着数组大小的初步增加,一步一步地填满它们。

总的来说,做一个正常的算法,不要把自己的问题转嫁给别人。

 
Vladimir Karputov:

你想做什么?以 "4 "的风格漫不经心地写作?不顾一切地查询不存在的索引?依靠为你初始化数组的 "叔叔"?

MQL5将强烈谴责这种业余人员,所以他们没有任何懈怠。从一开始就学会正确的写法:如果你已经创建了一个数组,你必须绕过所有的索引,并填充它们。如果你不想一下子填满它们--随着数组大小的初步增加,一步一步地填满它们。

总的来说,做一个正常的算法,不要把自己的问题转嫁给别人。

预先填充一个数组几乎不可能导致任何错误。它很方便。

在MT5中,你声明一个数组,清理垃圾,然后使用它。

在MT4中,你声明一个数组并使用它。

这就是区别。

为什么我们要把清除数组的任务转移到用户身上?

这是否会提高他们的专业水平?也许。但它肯定不会增加任何积极的情绪))。因此,对我的消极态度感到抱歉。我花了几天时间试图找出问题所在。这让我很不爽)。

 
由于速度问题,删除了自动清洁功能。
 
Реter Konow:

没有错误。

刚刚删除了在声明时用零自动初始化数组的 功能。为什么?- 未知。正因为如此,你必须在使用前手动清除该阵列。这并不总是很方便。

彼得,初始化被删除了,因为这个程序需要时间,在C++和MQL5中,不习惯为你不使用的东西付费。数组的初始化并不总是需要的,例如,如果你立即用所需的值填充数组,就不需要了。

总之,从你的问题来看,我不明白困难在哪里。你总是知道你的阵列的大小。如果你重新分割一个数组,你总是知道你要向它添加多少个元素。所以很容易在ArrayResize之后立即调用ArrayInitialize函数。

你可能会问,当人们不得不额外考虑这么多事情时,他们如何使用MQL5呢?答案是:那些在良好水平上使用MQL5的人使用标准库,所以他们甚至不考虑所有这些东西,他们不初始化数组或重新标记它,他们只是添加新的值。但是由于你是一个dartan,不认识这些,你只有一个选择:使用ArrayInitialize对你的数组进行低级别的、艰苦的管理。

 
Vasiliy Sokolov:

1.彼得,初始化被删除了,因为这个过程需要时间,而在C++和MQL5中,为你不使用的东西付费是不习惯的。数组初始化并不总是需要的,例如,如果你立即用所需的值填充数组,就不需要了。

而从你的问题来看,我仍然不明白困难在哪里。你总是知道你的阵列的大小。如果你重新分割一个数组,你总是知道你要添加多少个额外的项目到其中。所以在ArrayResize之后调用ArrayInitialize函数很容易。

你可能会问,有这么多额外的事情需要考虑,人们如何使用MQL5?答案是:那些在良好水平上使用MQL5的人使用标准库,所以他们甚至不考虑这些东西,他们不初始化一个数组或其重新分区,他们只是添加新的值。但是,由于你是一个dartan,不会承认任何类似的事情,你只有一个选择:使用ArrayInitialize,对你的数组进行低级别的、艰苦的管理。

瓦西里,一点一点说。

1.逻辑告诉我们,数组清理 程序在编译阶段只被编译器执行一次。如果它被删除了,这意味着我们想提高编译器的性能,损害了程序员的便利,但也许是为了提高他的水平。

2.内核的大小取决于网络代码。项目越多,内核阵列就越大。因此,内核是动态的。它是分阶段建造的。如果它的单元格中存在垃圾,那么在不同阶段的函数中,一个单元格对另一个单元格的引用将导致程序崩溃。

在MT4中没有这样的问题,因为未初始化的单元格是零,不是随机值。简而言之,我的技术最初应该在一个干净的阵列中工作。

3.我并不反对强制自定义阵列清除,只是,就像我说的,得到了一点唠叨的感觉。有几天,我无法理解为什么一切都崩溃了。以为是我的错,结果是--他们拿走了我的一个便利))。


不要紧,我们会习惯的)。


顺便说一下,我应该说我的代码是绝对跨平台的。我不需要改变任何东西,除了这个清理工作!"。

 
Реter Konow:

没有错误。

刚刚删除了在声明时用零自动初始化数组的 功能。为什么?- 未知。 ...

这样,我们就可以写出快速的程序。初始化远不总是需要的,更多的时候,数组马上就被填充了自己的数据。

 
Dmitry Fedoseev:

为了能够编写快速的程序。初始化并不总是需要的,数组通常会立即填充自己的数据。

好的。我明白了。

 
Реter Konow:

...如果单元格中存在垃圾,那么在不同结构阶段的函数中对一个单元格的引用会导致程序崩溃。

皮奥特,如果你的内核里有垃圾,你就得为它负责。MQL5与MQL4不同,并不试图了解用户的需求,这一点是正确的。

 
P.S.我认为你会更幸运,彼得,如果你最后能在某个JavaScript论坛上找到。那里有很多这样的美味。你会达到很高的高度!