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

 
cameofx:

irusoh1的解释中缺少的是变量需要是数组[...] 。

irusoh1是对的:变量不需要是一个数组。比如说。

int start()
{
   int returnvalue1, returnvalue2;
   returnvalue1 = Example(returnvalue2);
   MessageBox("Example 1: " + returnvalue1 + "\r\nExample 2: " + returnvalue2);
}

int Example(int & referenceparameter)
{
   referenceparameter = 2;
   return (1);
}
 
inkexit:

我需要从一个函数中返回两个结果。

如果要将这两个(或更多)结果分配给变量,只需将它们声明为全局变量,并在函数 中为它们赋值。
 
engcomp:
如果要将两个(或更多)结果分配给变量,只需将它们声明为全局变量,并在函数中给它们赋值。
尽量减少全局变量的数量 被认为是良好的编程实践。通过引用传递一些变量(如果需要返回一个以上的变量)比在全局范围内声明它们更好。
 
gordon:
尽量减少全局变量的数量被认为是良好的编程实践。通过引用传递一些变量(如果需要返回多个变量)比在全局范围内声明它们更好。
谢谢你,Gordon,我不知道这个。
 
jjc:

irusoh1是对的:变量不需要是一个数组。比如说。

那么我的措辞和概念在回答这个问题时是不正确的。不过,我认为通过引用传递的目的本质上是通过函数 来操作数组的实用方法。

在变量上使用传递参数作为引用的函数,只有修改X个变量的实用性,加上一个变量的返回

而对数组的使用允许修改括号中的X个数组乘以每个数组的Y个大小。

 

数组总是通过引用来传递。MQL数组的问题是,它们不能在函数 中被改变(如调整大小),只有其成员可以。

这没有意义,而且限制了数组的操作范围。

也许这在MQL5中得到了解决?

 
irusoh1:

[...] MQL数组的问题是,它们不能在函数中被改变(如调整大小),只有其成员可以。

可以 在函数中调整一个通过引用传递给函数 的数组的大小...你是什么意思?
 
[...] MQL数组的问题是,它们不能在函数中被改变(如调整大小) only their members can

@ irusoh1 : 你的意思是让函数参数 动态化吗? 我也不明白。

@ Gordon : 你知道为什么他们说'参数是通过值传递的。数组只能通过引用来传递'。我知道这在代码中是如何体现的,但我不明白其中的道理。例如,在其他语言中是否有不这样的情况出现?我不知道这个规则的反面是什么,,。

 

cameofx:

@ Gordon : 你知道为什么他们说'参数是通过值传递的。数组只能通过引用来传递"。我知道这在代码中是如何体现的,但我不明白其中的道理。例如,在其他语言中是否有不这样的情况出现?我不知道这个规则的反面是什么,,。

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

大家好

Gordon说:尽量减少全局变量的数量 被认为是良好的编程实践。通过引用传递一些变量(如果需要返回多个变量)比在全局范围内声明它们要好。

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

谢谢

菲利普