Funzione che restituisce 2 risultati? - pagina 2

 
cameofx:

Quello che manca nella spiegazione di irusoh1 è che la variabile deve essere Array(s) [...]

irusoh1 ha ragione: la variabile non ha bisogno di essere un array. Per esempio:

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:

Ho bisogno di restituire 2 risultati da una funzione.

Se i due (o più) risultati devono essere assegnati a variabili, basta dichiararle come globali e assegnare loro dei valori nella funzione.
 
engcomp:
Se i due (o più) risultati devono essere assegnati a variabili, basta dichiararli come globali e assegnare loro dei valori nella funzione.
È considerata una buona pratica di programmazione ridurre al minimo il numero di variabili globali. È meglio passare alcune variabili per riferimento (se più di una variabile deve essere restituita) piuttosto che dichiararle in uno scope globale.
 
gordon:
È considerata una buona pratica di programmazione ridurre al minimo il numero di variabili globali. È meglio passare alcune variabili per riferimento (se più di una variabile deve essere restituita) piuttosto che dichiararle in un ambito globale.
Grazie Gordon, non lo sapevo.
 
jjc:

irusoh1 ha ragione: non è necessario che la variabile sia un array. Per esempio:

Il mio fraseggio & concetto non è corretto nel rispondere all'argomento allora. Ancora, vedo che lo scopo di passare per riferimento è in sostanza il modo pratico di manipolare Array(s) per funzione.

Usare il parametro passato come funzione di riferimento sulle variabili ha solo la praticità di modificare un numero X di variabili, più una variabile con ritorno

Mentre usarlo per Array permette di modificare X numero di Array nella parentesi per Y dimensioni di ogni Array.

 

Gli array sono sempre passati per riferimento. Il problema con gli array MQL è che non possono essere cambiati all'interno della funzione (come il ridimensionamento), solo i loro membri possono.

Non ha senso, e limita l'ambito di manipolazione degli array.

Forse questo è stato risolto in MQL5?

 
irusoh1:

[...] Il problema con gli array MQL è che non possono essere cambiati all'interno della funzione (come il ridimensionamento) solo i loro membri possono.

È possibile ridimensionare un array passato per riferimento a una funzione dall'interno della funzione... Cosa vuoi dire?
 
[...] Il problema con gli array MQL è che non possono essere modificati all'interno della funzione (come il resize) only their members can.

@ irusoh1 : Intendi rendere dinamici i parametri della funzione ? Non lo capisco nemmeno io.

@ Gordon : Sai perché si dice "i parametri sono passati per valore. Gli array possono essere passati solo per riferimento". So come questo si tradurrebbe nel codice, ma non capisco il ragionamento. Per esempio, c'è qualche caso in altre lingue in cui questo non è il caso, cioè gli array sono passati per valore o qualcosa del genere. Non saprei quale sarebbe il contrario di questa regola,,,

 

cameofx:

@ Gordon : Sai perché si dice 'i parametri sono passati per valore. Gli array possono essere passati solo per riferimento". So come questo si manifesterebbe nel codice, ma non capisco il ragionamento. Per esempio, c'è qualche caso in altre lingue in cui questo non è il caso, cioè gli array sono passati per valore o qualcosa del genere. Non saprei quale sarebbe il contrario di questa regola,,,

Ecco una spiegazione semplificata -> https://www.mql5.com/en/forum/117210. Gli array sono sempre passati per riferimento in MQL4.
 

Ciao a tutti

Gordon ha detto: è considerata una buona pratica di programmazione ridurre al minimo il numero di variabili globali. È meglio passare alcune variabili per riferimento (se più di una variabile deve essere restituita) piuttosto che dichiararle in un ambito globale.

Mi dispiace, ma non è una risposta "tecnica" :) Potreste dire perché è meglio passare una variabile per riferimento invece di una variabile globale?

grazie

Philippe

Motivazione: