OOP, modelos e macros em mql5, sutilezas e usos - página 4

 
Alexey Navoykov:
Eu já consegui - e não se arrependa nem um pouco ) Mas você, estou vendo, tem um grande prazer em se limitar com restrições artificiais impostas pela MQ. Talvez você seja masoquista? ) Você insiste tanto em me convencer de que é necessário. Não é necessário, é forçado - essa é a questão.

Você se parece mais com um masoquista. Em vez de seguir as regras do idioma que você passou seu tempo escrevendo uma muleta que ninguém precisa, tentando passar sua opinião como um axioma, apesar do fato de eu não ser o único que lhe fala de seus erros. E, além disso, você está tentando passar seu ofício como sutilezas e truques. E as sutilezas e características acabam por ser a observância das regras descritas na documentação.

Consulte os desenvolvedores das variedades de linguagem C. Ouça o endereço do link para onde você será enviado. E aqui você acha que é aceitável exigir algo dos desenvolvedores em troca de sua própria ignorância.

 
Alexey Viktorov:

Você se parece mais com um masoquista. Em vez de seguir as regras do idioma, você passou seu tempo escrevendo uma muleta que ninguém quer.

Meio dia gasto para escrever uma muleta me pagará no futuro com muito tempo e células nervosas economizados, mais a conveniência do código (escrevo da maneira que preciso).

tentando passar sua opinião como axiomática, apesar de eu não ser o único que lhe fala de seus erros.

...

Leve-o para os desenvolvedores da linguagem C.

Erros? Você já programou em uma linguagem de programação real? Acho que não. Se você não está ciente disso, a MQL é escrita de forma similar à C++. Então, neste caso os desenvolvedores escorregaram e não levaram em conta alguns detalhes e criaram um bug que não pode ser encontrado em linguagens de programação normais.

E aqui você considera aceitável exigir algo dos desenvolvedores ao invés de sua própria ignorância.

Você está novamente confuso. Eu não estou mais pedindo nada.
 
Alexey Navoykov:

Passar meio dia escrevendo uma muleta me pagará no futuro com muito tempo e células nervosas poupadas, além da conveniência do código (eu o escrevo da maneira que eu quero).

Erros? Você já programou em uma linguagem de programação real? Acho que não. Se você não está ciente disso, a MQL é escrita de forma similar à C++. Então, neste caso os desenvolvedores escorregaram e não levaram em conta alguns detalhes e criaram um bug que não pode ser encontrado em linguagens de programação normais.

Você está novamente confuso. Eu não estou exigindo nada.

Por que os desenvolvedores de mql deveriam imitar alguém?

 
Alexey Viktorov:

Por que diabos os desenvolvedores de mql iriam querer imitar qualquer um?

Olhe a documentação, ela diz tudo em preto e branco.
 
Alexey Viktorov:

Consulte os desenvolvedores das variantes da linguagem C. Ouça o endereço do link para o qual você será enviado. E aqui você acha que é aceitável exigir algo dos desenvolvedores em troca de sua própria ignorância.

O que a família da língua C tem a ver com isso? É apenas em µl. Isso porque a mk decidiu fazer uma compilação multi-passe para agradar àqueles que querem.

void start() {
    int i = f();
}
int f() {return 0;}

O que você não deveria ter feito.

ZS:

Geralmente já ouvi aqui mais de uma vez que o c++ é um tiro no pé, 70% não é usado lá, vamos fazer um µl conveniente e seguro. Mas parece mais que precisamos reinventar este c++ "torto" para uma codificação confortável :)

 
Alexey Navoykov:

Assim, você defende o uso massivo de variáveis globais, como eu o entendo. Então é improvável que você e eu nos entendamos um ao outro.

Além disso, a função em si pode ser um modelo. E a instância criada, respectivamente, deve ser parametrizada pelo mesmo tipo:

Sua ação?

Não que eu seja um apoiador, mas não vejo nada tenso em declarar de uma vez por todas uma instância de uma classe, mesmo que não seja necessário para nada além da facilidade de uso de variáveis estáticas. E quando, ultimamente, eu mesmo me deparei com este bug com funções estáticas dentro das funções, decidi simplesmente nunca declará-las assim (funções internas) e não há nenhum problema.

 
pavlick_:

Isso porque a mc decidiu fazer uma compilação multi-pass para o benefício daqueles que querem fazer

o que eles não deveriam ter feito.

Receio que ele não entenda o que você quer dizer )
 
pavlick_:

O que a família da língua C tem a ver com isso? Essa é a única coisa que está errada com o mcl. Isso porque µ decidiu fazer uma compilação multipasse para aqueles que assim o desejam.

O que você não deveria ter feito.

ZS:

Geralmente já ouvi aqui mais de uma vez que o c++ é um tiro no pé, 70% não é usado lá, vamos fazer um µl conveniente e seguro. Mas parece mais que precisamos reinventar este c++ "torto" para uma codificação confortável :)

Então você está dizendo que não se pode inicializar uma variável com uma função? Eu entendo corretamente?

 
Ilya Malev:

Não que eu seja um apoiador, mas não vejo nada tenso em declarar uma instância de uma classe imediatamente após sua descrição, mesmo que não seja necessário para nada, exceto para o uso conveniente de variáveis estáticas. E quando recentemente eu mesmo me deparei com este bug com funções internas estáticas, decidi simplesmente nunca declará-las assim (funções internas) e não há nenhum problema.

Bem, foi sobre isso que eu comecei a falar aqui. Eu planejava substituir todas as estáticas por globais também (embora seja difícil, é claro). Mas como mostrado acima, não vai funcionar com modelos. Com macros também. E eu uso tudo isso amplamente, então eu fiz minha implementação. Embora não resolva todos os problemas. Matrizes dinâmicas ainda não podem ser inicializadas, tipos constantes também, por isso elas têm que ser globalizadas sem ambigüidade.
 
Alexey Viktorov:

Então você está dizendo que não pode rubricar uma variável com uma função? Eu entendo corretamente?

Não, não é isso que estou dizendo. Em pluses static, um membro da função será inicializado na primeira vez em que entrar na função. Sobre o multi-passing - eu estava com pressa, ingenuamente pensei que o µl o permitiria

int q = w;
int w;