Funktion, die 2 Ergebnisse liefert? - Seite 2

 
cameofx:

Was in der Erklärung von irusoh1 fehlt, ist, dass die Variable ein Array(s) sein muss [...]

irusoh1 hat recht: die Variable muss kein Array sein. Zum Beispiel:

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:

Ich muss 2 Ergebnisse aus einer Funktion zurückgeben.

Wenn die beiden (oder mehr) Ergebnisse Variablen zugewiesen werden sollen, deklarieren Sie sie einfach als global und weisen Sie ihnen in der Funktion Werte zu.
 
engcomp:
Wenn die beiden (oder mehr) Ergebnisse Variablen zugewiesen werden sollen, deklarieren Sie sie einfach als global und weisen Sie ihnen in der Funktion Werte zu.
Es gilt als gute Programmierpraxis, die Anzahl der globalen Variablen zu minimieren. Es ist besser, einige Variablen per Referenz zu übergeben (wenn mehr als eine Variable zurückgegeben werden muss), als sie in einem globalen Bereich zu deklarieren.
 
gordon:
Es gilt als gute Programmierpraxis, die Anzahl der globalen Variablen zu minimieren. Es ist besser, einige Variablen per Referenz zu übergeben (wenn mehr als eine Variable zurückgegeben werden muss), als sie in einem globalen Bereich zu deklarieren.
Vielen Dank, Gordon, das wusste ich nicht.
 
jjc:

irusoh1 hat recht: Die Variable muss kein Array sein. Zum Beispiel:

Meine Formulierung und mein Konzept sind nicht korrekt, um das Thema zu beantworten. Dennoch sehe ich den Zweck der Übergabe durch Verweis ist im Wesentlichen der praktische Weg, um Array (s) durch Funktion zu manipulieren.

Die Verwendung von übergebenen Parametern als Referenzfunktion auf Variablen hat nur die Praktikabilität, X Anzahl von Variable(n) zu ändern, plus eine Variable mit Rückgabe

Bei der Verwendung für ein Array können X Arrays in der Klammer mal Y Größen jedes Arrays verändert werden.

 

Arrays ae immer durch Referenz übergeben. Das Problem mit MQL-Arrays ist, dass sie nicht innerhalb der Funktion geändert werden können (wie resize) nur ihre Mitglieder können.

Das macht keinen Sinn und schränkt die Möglichkeiten der Array-Manipulation ein.

Vielleicht wurde dies in MQL5 behoben?

 
irusoh1:

[...] Das Problem mit MQL-Arrays ist, dass sie nicht innerhalb der Funktion geändert werden können (wie resize) nur ihre Mitglieder können.

Sie können die Größe eines Arrays, das per Referenz an eine Funktion übergeben wird, innerhalb der Funktion ändern... Was meinen Sie?
 
[...] Das Problem mit MQL-Arrays ist, dass sie nicht innerhalb der Funktion geändert werden können (wie resize) only their members can.

@ irusoh1 : Meinen Sie damit, die Funktionsparameter dynamisch zu machen ? Ich verstehe es auch nicht.

@ Gordon : Weißt du, warum man sagt, dass Parameter als Wert übergeben werden. Arrays können nur als Referenz übergeben werden'. Ich weiß, wie sich das auf den Code auswirkt, aber ich verstehe die Argumentation nicht. Gibt es zum Beispiel irgendwelche Vorkommnisse in anderen Sprachen, bei denen das nicht der Fall ist, d.h. Arrays werden als Wert übergeben oder so. Ich wüsste nicht, was das Gegenteil dieser Regel wäre,,,

 

cameofx:

@ Gordon : Wissen Sie, warum es heißt 'Parameter werden als Wert übergeben. Arrays können nur als Referenz übergeben werden". Ich weiß, wie sich das im Code auswirken würde, aber ich verstehe die Begründung nicht. Gibt es zum Beispiel irgendwelche Vorkommnisse in anderen Sprachen, bei denen das nicht der Fall ist, d.h. Arrays werden als Wert übergeben oder so. Ich wüsste nicht, was das Gegenteil dieser Regel wäre,,,,

Hier ist eine vereinfachte Erklärung -> https://www.mql5.com/en/forum/117210. Arrays werden in MQL4 immer per Referenz übergeben.
 

Hallo zusammen

Gordon sagte: Es gilt als gute Programmierpraxis, die Anzahl der globalen Variablen zu minimieren. Es ist besser, einige Variablen per Referenz zu übergeben (wenn mehr als eine Variable zurückgegeben werden muss), als sie in einem globalen Bereich zu deklarieren.

Es tut mir leid, aber es ist keine "technische" Antwort :) Könnten Sie mir sagen, warum es besser ist, eine Variable per Referenz zu übergeben, anstatt eine globale Variable?

Danke

Philippe