Beh, sì, non uso correttamente tutti i modificatori qui, ecco perché ha causato la mia ammirazione, l'ho controllato, ora ho offuscato il codice, anche se volevo solo scriverlo in modo compatto ))))
La mia implementazione del costrutto per ogni MQL.
Finora, funziona solo per gli array: 1) i regolari mql-arrays; 2) le classi di array personalizzate, che dovrebbero avere l'operatore [](int) definito e lafunzione globaleArraySize sovraccaricata.
Sintassi:
foreach(element_var, array) { ... }
Un array può essere definito come una variabile o un'espressione - ecco perché abbiamo dovuto costruire il giardino). L'espressione viene eseguita una volta, memorizzando un puntatore all'array, e poi accedendo al puntatore.
La mia implementazione del costrutto per ogni MQL.
Finora, funziona solo per gli array: 1) i regolari mql-arrays; 2) le classi di array personalizzate, che dovrebbero avere l'operatore [](int) definito e la funzione globale ArraySize sovraccaricata.
Che figata! È possibile fare una tale variante?
voidOnStart()
{
MqlTick Ticks[3];
for (int i = 0; i < ArraySize(Ticks); i++)
Ticks[i].bid = i + 1;
foreach(MqlTick Tick, Ticks) Print(Tick.bid); // OK
foreach(MqlTick Tick[1], Ticks) ArrayPrint(Tick); // 'Tick' - invalid array access
}
Sì, è così. Quando ho iniziato a indagare, ho scoperto una particolarità interessante. Quando un argomento di tipo costante(const int, per esempio) viene passato a un template, viene preso semplicemente come: T = int, ma anche la costanza viene in qualche modo presa in considerazione, il che confonde:
template<typename T>
class B { };
template<typename T>
void f(T & a)
{
B<const T> b; // OK. Значит T==int
const T arr[]={}; // Тоже всё ОК.
T arr2[]; // 'arr2' - 'const' variable must be initialized. wtf?
}
voidOnStart()
{
constint a=0;
f(a);
}
All'inizio pensavo fosse una caratteristica di MQL, ma è lo stesso in C++.
// Некоторые возможности структур, которых нет у классов.hm, interessante, mi piaceva molto l'idea dei campi const, const sarà inizializzato solo una volta
hm, interessante, mi piace l'idea con campi const, const sarà inizializzato solo una volta
potete ora fare la normalizzazione dei lotti in questo modo:
Si possono dichiarare membri costanti anche nelle classi.
Potete anche dichiarare membri costanti nelle classi.
Beh, sì, non uso correttamente tutti i modificatori qui, ecco perché ha causato la mia ammirazione, l'ho controllato, ora ho offuscato il codice, anche se volevo solo scriverlo in modo compatto ))))
ZS: la piegatura in ME è davvero carente! - è faticoso far rotolare la rotella del mouse qua e là (((La mia implementazione del costrutto per ogni MQL.
Finora, funziona solo per gli array: 1) i regolari mql-arrays; 2) le classi di array personalizzate, che dovrebbero avere l'operatore [](int) definito e lafunzione globaleArraySize sovraccaricata.
Sintassi:
foreach(element_var, array) { ... }Un array può essere definito come una variabile o un'espressione - ecco perché abbiamo dovuto costruire il giardino). L'espressione viene eseguita una volta, memorizzando un puntatore all'array, e poi accedendo al puntatore.
Esempi d'uso:
Esempi di utilizzo:
Un po' riscritto
La mia implementazione del costrutto per ogni MQL.
Finora, funziona solo per gli array: 1) i regolari mql-arrays; 2) le classi di array personalizzate, che dovrebbero avere l'operatore [](int) definito e la funzione globale ArraySize sovraccaricata.
Che figata! È possibile fare una tale variante?
Che figata! È possibile fare una versione di questo?
foreach(Ticks[0], Ticks) ArrayPrint(Ticks[0].bid);Beh, l'inizializzazione di una matrice con variabili non è supportata in MQL. Puoi fare un'assegnazione a un elemento della matrice:
Non capisco l'implementazione, ma non vedo il senso di farlo in questo modo.
Questo non funziona
Questa variante non funziona
All'inizio pensavo fosse una caratteristica di MQL, ma è lo stesso in C++.
All'inizio pensavo fosse una caratteristica di MQL, ma è lo stesso anche in C++.
perché il tipo è const int. è solo che nel template si può ancora attaccare const davanti senza problemi
ma se in c++ potete rimuovere const da un tipo con alcune semplici manipolazioni, non potete farlo in mql.