返回2个结果的函数? - 页 3

 
gordon:
这里有一个简化的解释->https://www.mql5.com/en/forum/117210。 在MQL4中,数组总是通过引用来传递。

是的,谢谢。但就像我问的那样,这是否意味着在其他语言上不是这样的?如果这是使用MQ/MT4或其他语言结构带来的唯一方法,那么我想他们就不必麻烦地说明了。

我想我问的是你在那个帖子中所说的 "技术细节"。只是出于好奇心,而不是必要性。

至于语法,用于交易策略编程的MQL5语言与C++编程语言非常相似,除了一些特点。

  • 没有地址运算。
  • 没有goto运算符。
  • 不能声明一个匿名的枚举。
  • 类和结构的构造函数不能有参数。
  • 没有多重继承。

像这样,我可以暗示,在C++上,相反的情况将是真实的...... 还是谢谢你,Gordon。

 
Matutin:

很抱歉,这不是一个 "技术性 "的回答:) 你能说说为什么通过引用传递变量而不是全局变量更好吗?

有很多原因,我不想重复,我想让你看看这里 ->https://en.wikipedia.org/wiki/Global_variable 和这里 ->http://www.c2.com/cgi/wiki?GlobalVariablesAreBad(你可以通过谷歌了解更多...这是一个被广泛接受的概念,网络上有很多信息)。

 
cameofx:

[......]这是否意味着在其他语言上它不是? [...]

这并不意味着什么,但具体来说,在C和C++中,数组也是通过引用来传递的(技术上来说,数组的第一个元素的指针被传递,该指针是通过值传递的)。
 
gordon:

很多原因我不想重复,我想让你看看这里 ->https://en.wikipedia.org/wiki/Global_variable 和这里 ->https://www.mql5.com/go?link=http://www.c2.com/cgi/wiki?GlobalVariablesAreBad(你可以用谷歌搜索更多...这是一个被广泛接受的概念,网络上有很多信息)。


非常有趣不幸的是,EA需要参数,而且有时需要很多,所以我们无法避免它们,必须注意https://www.mql5.com/go?link=http://www.c2.com/cgi/wiki?GlobalVariablesAreBad 中提到的所有原因。

我正在使用GlobalVariable的命名规则:更容易管理和避免一些错误。

谢谢你,Gordon。

 
Matutin:

非常有趣!不幸的是,EA需要参数,而且有时需要很多,所以我们不能避免它们[...] 。

外延变量的确是不可避免的。虽然它们在范围上是全局的,但它们与全局变量(不要与GV 混淆) 一样;具体来说--不建议通过代码改变它们的值,因此无论如何它们不应该被用来在函数之间传递信息(见这里->https://www.mql5.com/en/forum/123535)


我在使用GlobalVariable的命名规则:更容易管理和避免一些错误。

这个讨论是关于定义在全局范围内的变量(在特殊函数start(), init(), deinit()之外声明),而不是关于GV的...不要把这两者混为一谈。
 

我只是好奇:是否有任何编程语言有返回多个结果的函数

 

也许你可以欺骗一个函数,让它返回两个值,把它们合并起来,然后在调用函数中再把它们分开。

像这样

a = 10;

b = 20;

a = a*1000

c = a+b // 10020

return(c)。

然后在调用函数中

b = c%1000 // 20

a = c-b/1000 // 10

 
SDC:

也许你可以欺骗一个函数,让它返回两个值,把它们合并起来,然后在调用函数中再把它们分开。

像这样

[...]
也许不是。
 

为什么不呢?

 
SDC:

为什么不呢?

为什么要解决一个不存在的问题?为什么要重新发明轮子?为什么要编造不明确的代码,只在有限的情况下工作?