Pessoal, bom dia.
Procurei na documentação, mas não encontrei. Hoje vi em alguns códigos que estou estudando que colocaram chamadas para funções dentro de chaves ao definir uma variável, tipo:
double preco = {funcao(bla bla bla};
Até pensei ser um erro no código e removi as chaves. O compilador deu erro falando sobre as chaves... Coloquei de volta e voltou a funcionar. Mas eu não encontrei uma explicação do que significa ter essas funções sendo chamadas dentro de chaves. Alguém sabe em que parte da documentação ele fala sobre isso?
Agradecido!
Poderia dar um exemplo com mais contexto? Pra mim ta parecendo errado e o codigo deveria ser outro.
Pra mim seria so a inicializacao de um elemento de um array com o valor de retorno da funcao, so que pra ser isso teria que ser assim:
double preco[] = { funcao(bla, bla, bla) };
Note que tem um abre e fecha chaves que define a variavel como um numero indefinido de elementos e quando se passa o inicializador, o compilador entende que eh a variavel eh um vetor de um elemento. Entretanto, ate onde me lembro no MQL teria que ser atribuido o valor da funcao depois porque ele nao permite chamar uma funcao no inicializador (regiao entre chaves). Tem certeza que eh uma funcao e nao um define?
Poderia dar um exemplo com mais contexto? Pra mim ta parecendo errado e o codigo deveria ser outro.
Pra mim seria so a inicializacao de um elemento de um array com o valor de retorno da funcao, so que pra ser isso teria que ser assim:
double preco[] = { funcao(bla, bla, bla) };
Note que tem um abre e fecha chaves que define a variavel como um numero indefinido de elementos e quando se passa o inicializador, o compilador entende que eh a variavel eh um vetor de um elemento. Entretanto, ate onde me lembro no MQL teria que ser atribuido o valor da funcao depois porque ele nao permite chamar uma funcao no inicializador (regiao entre chaves). Tem certeza que eh uma funcao e nao um define?
Talvez realmente seja isso. Vi muitos códigos que colocam também: = {0}; - só que no mql5 dá erro.
Entao,
(1) double preco[] = { 0 };
(2) double preco[5] = { 0, };
Esses (1) e (2) parecem iguais, mas é completamente diferente. Voce consegue entender o que cada um faz?
O segundo, acho que preenche a primeira posição de um array de 5 (chute). O 1 da erro. Vi vários códigos assim que retornaram erro quando tentei compilar no mql5.
O segundo, acho que preenche a primeira posição de um array de 5 (chute). O 1 da erro. Vi vários códigos assim que retornaram erro quando tentei compilar no mql5.
Ambos compilam e funcionam.
(1) Define uma variavel de array dinamico inicializado com um elemento e o mesmo valendo zero. Aqui voce pode usar array_resize.
(2) Define uma variavel de array estatico inicializando os elementos 0 a 4 com zero. Aqui voce nao pode usar array_resize.
A inicializacao do array tambem pode ser feito por ZeroMemory(), mas nao tem como definir o valor que vai ser inicializado ja que eh sempre zero na funcao, ali no (2) o primeiro valor sera copiado pros demais.
Não era um código específico. Eu estava testando e baixando um monte de coisas para estudar e quando tentava compilar códigos que tinha essa expressão de = {0} ele dava erro.
![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Pessoal, bom dia.
Procurei na documentação, mas não encontrei. Hoje vi em alguns códigos que estou estudando que colocaram chamadas para funções dentro de chaves ao definir uma variável, tipo:
double preco = {funcao(bla bla bla};
Até pensei ser um erro no código e removi as chaves. O compilador deu erro falando sobre as chaves... Coloquei de volta e voltou a funcionar. Mas eu não encontrei uma explicação do que significa ter essas funções sendo chamadas dentro de chaves. Alguém sabe em que parte da documentação ele fala sobre isso?
Agradecido!