Bem, sim, eu não uso todos os modificadores adequadamente aqui, por isso causou a minha admiração, eu verifiquei-o, agora ofusquei o código, embora quisesse apenas escrevê-lo de forma compacta ))))
A minha implementação de construção para cada um pela MQL.
Até agora, só funciona para arrays: 1) mql-arrays regulares; 2) classes de array personalizadas, que devem ter [](int) operador definido efunção ArraySize global sobrecarregada.
Sintaxe:
foreach(element_var, array) { ... }
Uma matriz pode ser definida como uma variável ou uma expressão - é por isso que tivemos de construir o jardim). A expressão é executada uma vez, armazenando um ponteiro para a matriz, e depois acedendo ao ponteiro.
A minha implementação de construção para cada um pela MQL.
Até agora, funciona apenas para arrays: 1) mql-arrays regulares; 2) classes de arrays personalizadas, que devem ter [](int) operador definido e função ArraySize global sobrecarregada.
Isso é fixe! É possível fazer uma tal 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
}
Sim, é. Quando comecei a investigar o assunto, descobri uma peculiaridade interessante. Quando um argumento de tipo constante(const int, por exemplo) é passado para um modelo, é tomado simplesmente como: T = int, mas a constância é de alguma forma também tida em conta, o que é confuso:
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);
}
No início pensei que era uma característica da MQL, mas é a mesma coisa em C++.
// Некоторые возможности структур, которых нет у классов.hm, interessante, gostou muito da ideia com const fields, const só será rubricada uma vez
hm, interessante, gosto da ideia com campos const, const será inicializada apenas uma vez
pode agora fazer a normalização de lotes desta forma:
Também se pode declarar membros constantes nas aulas.
Também pode declarar membros constantes nas aulas.
Bem, sim, eu não uso todos os modificadores adequadamente aqui, por isso causou a minha admiração, eu verifiquei-o, agora ofusquei o código, embora quisesse apenas escrevê-lo de forma compacta ))))
ZS: a dobragem em ME é realmente inexistente! - é cansativo rodar a roda do rato aqui e ali (((A minha implementação de construção para cada um pela MQL.
Até agora, só funciona para arrays: 1) mql-arrays regulares; 2) classes de array personalizadas, que devem ter [](int) operador definido efunção ArraySize global sobrecarregada.
Sintaxe:
foreach(element_var, array) { ... }Uma matriz pode ser definida como uma variável ou uma expressão - é por isso que tivemos de construir o jardim). A expressão é executada uma vez, armazenando um ponteiro para a matriz, e depois acedendo ao ponteiro.
Exemplos de utilização:
Exemplos de utilização:
Um pouco reescrito
A minha implementação de construção para cada um pela MQL.
Até agora, funciona apenas para arrays: 1) mql-arrays regulares; 2) classes de arrays personalizadas, que devem ter [](int) operador definido e função ArraySize global sobrecarregada.
Isso é fixe! É possível fazer uma tal variante?
Isso é fixe! É possível fazer uma versão disto?
foreach(Ticks[0], Ticks) ArrayPrint(Ticks[0].bid);Bem, inicializar um array com variáveis não é suportado no MQL. Pode fazer uma atribuição a um elemento do array:
Ainda não descobri a implementação, mas não vejo a utilidade de o fazer dessa forma.
Isto não funciona
Esta variante não funciona
No início pensei que era uma característica da MQL, mas é a mesma coisa em C++.
No início pensei que era uma característica da MQL, mas é o mesmo em C++ também.
porque o tipo é const. int. é que no modelo ainda se pode anexar const. à frente sem problemas
mas se em c++ pode remover constantes de um tipo através de algumas manipulações simples, não o pode fazer em mql.