返回2个结果的函数?

 

我需要从一个函数 中返回两个结果。 我可以把它们分开,为我需要的每个结果创建一个函数,但这是一个更多的代码,并使其他事情变得更加复杂。 这在MT4中可能吗?

 

检查传入参数 的尼氏参考。

int res1 func(int& res2, 其他参数...)

 

你的意思是基本上运行两次函数,每次传递一个特殊的参数以获得不同的结果?我想这是可行的...

但愿我可以直接这样做。

return(a,b);
 

no,

int x。

int y=func(x, 其他参数)。

调用后x=5,y=2。

int res1 func(int& res2, other parameters...)

{

res2=5

返回(3)。

}

 

我是说y=3

 

哇,谢谢你的帮助,但我不明白你在这里做什么。 你是否有一个完整编码的功能,可以直接复制并粘贴到这里?

 

看起来它仍然只返回一个结果--"3"

return(3);

?

 

在mql4帮助中找到通过引用传递参数。

一般来说,通过引用传递意味着你从外部向函数 传递一个实际的变量(使用&),你可以在函数中改变它的值,当你从调用中返回时,这个变量仍然存在。

因此,int x的值为0。

在函数中你设置x=5

当你从函数中回来时,x=5是由函数设置的,所以你从函数中得到了第二个结果而没有返回两个结果。

函数从不返回两个结果,只返回一个。

 

好的,谢谢,irusoh1

 

irusoh1的解释中缺少的是变量需要是数组。而且,返回并不扮演填充/修改数组的角色,而是根据需要直接修改它。

int Xarray[]; int Yarray[];

void Fun2result(int& Array[], int& Brray[], int pos)
{    Array[pos] = 2 + pos;
     Brray[pos] = 5 + pos;
} 
int start()
{  
    for(i=Bars-1; i>=0; i--)
       Fun2result(Xarray, Yarray, i); 
}

祝您好运。

 

不需要是一个数组