Características da linguagem mql5, subtilezas e técnicas - página 212

 
A100 #:

Está a dar um tiro no pé - declarando-se privado. Tem acesso limitado e depois pergunta-se porque é que o código, onde as funções externas necessitam de acesso público, deixa subitamente de funcionar

Tudo funciona bem para mim e irá funcionar bem. Não tenho nada a ver com isso se não usar privado.

 
fxsaber #:

Tudo funciona bem para mim e vai continuar a funcionar. Não tenho nada a ver com isso se não usar privado.

Está a contradizer-se a si próprio - estruturas simples e privadas são coisas incompatíveis.

Fórum sobre comércio, sistemas de comércio automatizados e testes estratégicos

Peculiaridades de mql5, dicas e truques

fxsaber, 2021.11.17 07:53

Se comparar as duas funções, FileReadStruct funciona apenas com estruturas simples. Esta é uma diferença fundamental.

Até a Wikipédia sabe isto: dadosantigos simples(POD) éum tipo de dados emlinguagens modernasde programação de alto nível que tem uma disposição rigidamente definida de campos na memória e não requer restrições de acesso econtrolo automático.
 
A100 #:

Está a contradizer-se ao escrever sobre estruturas simples e privadas - são coisas incompatíveis

Até a Wikipédia sabe isto: dadosantigos simples(POD) éum tipo de dados emlinguagens modernasde programação de alto nível que tem uma disposição rigidamente definida de campos na memória e não requer acesso restrito econtrolo automático.

O contexto era claro sem a leitura da terminologia. Simples - sem cordas, matrizes dinâmicas ou objectos de classe a qualquer nível de nidificação.

Com esta definição, simples pode sempre ser um campo sindical.

struct MqlTick2 : private MqlTick {};

union UNION
{
  MqlTick2 Tick;
  uchar Bytes[sizeof(MqlTick2)];
};

void OnStart()
{
  UNION u;
  
  ArrayInitialize(u.Bytes, 0); // обнулили u.Tick
}
privado não dá qualquer garantia de imutabilidade a partir do exterior. E isso é uma coisa boa.
 
fxsaber #:

O contexto era claro sem que se lesse a terminologia. Simples - sem cordas, matrizes dinâmicas e objectos de classe a qualquer nível de nidificação.

Com esta definição, simples pode sempre ser um campo sindical.

privado não garante a imutabilidade a partir do exterior. E isto é uma coisa boa.

Já começa a confundir o elementar - a imutabilidade é constante, não privada

 
A100 #:

Já começa a ficar confuso com o elementar - a imutabilidade é constante, não privada

Apenas não compreendeu o que se pretendia dizer. Talvez eu não esteja a explicar bem. Isso já não importa.

 
fxsaber #:

Tudo funciona bem para mim e vai continuar a funcionar. Se não usar privado - não tenho nada a ver com isso.

Se usar {} em vez de ZeroMemory - não pode funcionar perfeitamente - mostrei isto por exemplo concreto- não há zeragem (mas ainda assim pode pensar o contrário)

 
A100 #:

Se usar {} em vez de ZeroMemory - não pode funcionar perfeitamente - mostrei isto por exemplo concreto

Estou perfeitamente ciente do quê, onde e porque o aplico. A peculiaridade foi expressa. Não houve vontade de discutir os gostos.

 
fxsaber #:

Estou perfeitamente ciente do quê, onde e porque o aplico. As especificidades foram expressas. Não houve vontade de discutir os gostos.

As razões para a sua não utilização foram expressas em conformidade

 
A100 #:

Se usar {} em vez de ZeroMemory - não pode funcionar perfeitamente - mostrei isto por exemplo concreto- não há zeragem (mas ainda assim pode pensar o contrário)

Para a união iniciamos apenas o primeiro membro, trocamos os campos e o teste será executado.
Vamos considerar se devemos alterar o comportamento em detrimento da velocidade para o tornar da forma como a maioria dos utilizadores espera que seja.


O Arquivo... apareceu quando a privacidade e a constância não existiam, ainda não pensámos em mudar este comportamento, uma vez que não o consideramos crítico.

 
Ilyas #:

O Arquivo... apareceu quando a privacidade e a constância não existiam, ainda não pensámos em mudar este comportamento, uma vez que não o consideramos crítico.

E não há necessidade de alterar o comportamento das funções existentes - basta adicionar novas funções adequadas (com algum prefixo/sufixo) e declarar as funções anteriores obsoletas com um aviso correspondente

Razão: