Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 406
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Como escrevo uma função com um número variável de parâmetros?
Você pode definir alguns dos parâmetros de uma função para um valor inicial (estes parâmetros devem ser os últimos). Quando a função é chamada, estes parâmetros podem ser definidos ou não, dependendo da necessidade. Se os parâmetros não forem definidos explicitamente, eles receberão os valores iniciais.
A segunda opção é a sobrecarga. Basta escrever uma função com o mesmo nome, apenas com diferentes tipos/números de parâmetros.
Como por exemplo?
Preciso passar vários parâmetros para uma função, mas em situações diferentes, preciso passar um número diferente, conhecido antecipadamente
Em C, por exemplo, isto é implementado da seguinte formae depois processar esses parâmetros na função
int func(int a, int b, ...)
Existe alguma maneira de colocar um botão "Desfazer" na barra de ferramentas no MetaEditor?
(aquele que implementa o Ctrl+Z)
Preciso passar vários parâmetros para uma função, mas em situações diferentes, preciso passar um número diferente, conhecido antecipadamente
Em C, por exemplo, isto é implementado da seguinte formae depois processar esses parâmetros na função
int func(int a, int b, ...)
Passar a matriz e o número de parâmetros a serem tomados da matriz
Passar em uma matriz e o número de parâmetros a serem tomados da matriz
Portanto, os números que preciso passar não estão em ordem, ou seja, um universal não pode ser gerado.
Pelo menos me dê um exemplo não abstrato.
Por exemplo:
Dependendo da condição (NÃO se, mas basicamente, eu mesmo escrevo estes números)
a = func(dígito, 10, 18, 42); ou a = func(dígito, 11, 18, 42, 42, 15, 13); ou a = func(dígito, 5);
duplo func(int num, ????)
{
return("soma destes parâmetros"/num);
}
assim:
Dependendo da condição (NÃO se, mas basicamente, eu mesmo escrevo estes números)
a = func(dígito, 10, 18, 42); ou a = func(dígito, 11, 18, 42, 42, 15, 13); ou a = func(dígito, 5);
duplo func(int num, ????)
{
return("soma destes parâmetros"/num);
}
Bem, então, o que primeiro veio à mente, e como já sugerido aqui acima - passar em matriz de função dupla, e em função calcular valores necessários a partir de valores de matriz passada - é possível conhecer tanto a quantidade de números(tamanho da matriz), quanto, conseqüentemente, calcular suas relações. Somente a fórmula permanecerá a mesma para qualquer tamanho da matriz. Se você for mudar a fórmula também, então apenas a matriz não funcionará para isso, você terá que fazer mais um parâmetro - que apontará para a fórmula correta para o cálculo. Por exemplo, você pode passar uma enumeração indicando o tipo de fórmula (ENUM_TYPE_CALCULATED) e, com base no valor desta enumeração, por exemplo CALCULATE_SUMM, basta calcular (neste exemplo) a soma de todos os valores da matriz passada.
Portanto, os números que preciso passar ali estão fora de ordem, ou seja, um universal não pode ser formado
Aqui está uma resposta completa, mas nenhuma resposta...
Fórum sobre comércio, sistemas automatizados de comércio e testes estratégicos
Qualquer pergunta de novatos sobre MQL4, ajuda e discussão sobre algoritmos e códigos
Alexey Kozitsyn, 2018.01.05 11:46
Você pode definir alguns parâmetros de função para um valor inicial (estes parâmetros devem ser os últimos). Quando você chama a função, você poderá ou não definir estes parâmetros, dependendo da necessidade. Se os parâmetros não forem definidos explicitamente - eles obterão os valores iniciais.
A segunda opção é a sobrecarga. Basta escrever uma função com o mesmo nome, apenas com diferentes tipos/números de parâmetros.
Aqui está uma resposta completa, mas nenhuma resposta...
Se o conjunto e o número de números não forem conhecidos com antecedência, não há função para cada novo conjunto.