Bug de compilador com parâmetro de modelo = vazio* - página 8

 
A100:

Se eu não o declarei corretamente - por favor, me corrija - declarei meu conceito de forma breve e sem ambigüidade onde avisos sobre parênteses são necessários

Incorreto. O uso de parênteses reduz a probabilidade de erros.

Um aviso é uma mensagem de que relativamente muitos codificadores cometem erros ao escrever desta maneira: o resultado não é o que eles pretendiam. Isto se aplica a todas as advertências, não apenas a parênteses.

 
fxsaber:

Errado. O uso de parênteses reduz a chance de erros.

Um aviso é uma mensagem de que relativamente muitos codificadores cometem erros ao escrever desta maneira: o resultado não é o que eles pretendiam. Isto se aplica a todas as advertências, não apenas a parênteses.

Isto não é um conceito, mas um raciocínio geral.

A questão é de caráter prático e não é de caráter abstrato, mas muito concreto: onde você precisa de parênteses? Em todos os lugares? Ou de forma seletiva? Então, quem determina a seleção? O fxsaber? Você pode formulá-lo sem ambigüidade? Para que este conceito possa ser implementado no compilador

Eu o fraseei como: "somente onde não pode ser feito sem".

 
pavlick_:

ZS: mas se o fizesse, eu o tornaria o mais parecido possível com o padrão mais a biblioteca (nomes, comportamento, etc.), portanto, nenhuma escolha para mim. Por que construir outra especificação quando tudo já está escrito?

Se o fiz, não são necessárias arrays de objeto e ponteiro em mql. Listas dinâmicas e looping para cada uma permitem resolver 99% das tarefas no comércio da maneira mais compacta e conveniente. Você não precisa nem mesmo de uma classe de lista separada. Todas essas características extras são necessárias em uma escala maior do que a que normalmente temos aqui...

 
A100: Você consegue articular sem ambigüidade?

onde eles facilitam a compreensão do código

 
TheXpert:

onde eles facilitam a compreensão do código

Para que o conceito possa ser implementado no compilador. Ninguém proíbe parênteses desnecessários. A questão é sobre avisos desnecessários

 
A100:

A questão é prática, não abstrata, mas concreta: onde são necessários parênteses? Em todos os lugares? Ou de forma seletiva? Então, quem determina a seleção? O fxsaber? Você pode articulá-lo sem ambigüidade?

A questão era se o compilador MT4 está certo

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

Nova versão da plataforma MetaTrader 5 build 1930: janelas de gráficos flutuantes e bibliotecas .Net em MQL5

fxsaber, 2018.12.11 19:44

#property strict
   // from MT5: Canvas.mqh
   uint Pixel = (r<<16|g<<8|b<<0|255<<24) &0xffffffff; //check operator precedence for possible error; use parentheses to clarify precedence


Neste caso, é o caso. Os suportes não são necessários aqui, mas desejáveis, pois é provável que haja um erro. É com base em tais probabilidades que o compilador emite avisos de qualquer tipo. Eles foram inventados por uma razão.

 
fxsaber:

Neste caso, ele está certo.

Exemplos específicos não são necessários nesta fase (você pode dar quantos quiser). O que é necessário é um conceito único que possa ser implementado no compilador (quando os avisos devem ser emitidos se faltarem parênteses)

 
A100:

Nesta fase, você não precisa de exemplos específicos (você pode dar quantos quiser). O que é necessário é um conceito que possa ser implementado no compilador

Já está bastante bem implementado. É que o MT4 acabou se tornando mais inteligente.

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

Nova versão do MetaTrader 5 build 1930: Janela de gráficos flutuantes e biblioteca .Net em MQL5

fxsaber, 2018.12.11 20:22

Estas mensagens não são nada redundantes. Há sempre prioridades.

bool a = r && g || b; // check operator precedence for possible error; use parentheses to clarify precedence

O compilador já adverte cinco sobre um possível erro também.

 
fxsaber:

Já está bastante bem implementado. É que o MT4 acabou se tornando mais inteligente.

Este aviso foi dado somente porque a MQL5 tem prioridades diferentes. Não porque . ..

Isto é, o conceito: "Os avisos são provavelmente necessários nos lugares onde a MQL4 era diferente antes". Assim, os Desenvolvedores corrigiram seus erros anteriores. não mais do que isso

 
Seria mais conveniente se o compilador se oferecesse para organizar automaticamente os parênteses "corretamente", semelhante à maneira que o Excel faz quando você escreve uma fórmula incompleta.