Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 406
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
¿Cómo puedo escribir una función con un número variable de parámetros?
Puede establecer algunos de los parámetros de una función a un valor inicial (estos parámetros deben ser los últimos). Cuando se llama a la función, estos parámetros se pueden establecer o no, dependiendo de la necesidad. Si los parámetros no se establecen explícitamente, recibirán valores iniciales.
La segunda opción es la sobrecarga. Simplemente escriba una función con el mismo nombre, sólo que con diferentes tipos/número de parámetros.
¿Cómo qué?
Necesito pasar varios parámetros a una función, pero en diferentes situaciones necesito pasar un número diferente, conocido de antemano
En C, por ejemplo, esto se implementa asíy luego procesar estos parámetros en la función
int func(int a, int b, ...)
¿Hay alguna forma de poner un botón de "Deshacer" en la barra de herramientas del MetaEditor?
(el que implementa Ctrl+Z)
Necesito pasar varios parámetros a una función, pero en diferentes situaciones necesito pasar un número diferente, conocido de antemano
En C, por ejemplo, esto se implementa asíy luego procesar estos parámetros en la función
int func(int a, int b, ...)
Pasar el array y el número de parámetros a tomar del array
Pasar un array y el número de parámetros a tomar del array
Así que los números que necesito pasar no están en orden, es decir, no se puede generar un universal.
Al menos dame un ejemplo no abstracto.
Por ejemplo:
Dependiendo de la condición(NO si, sino básicamente, yo mismo escribo estos números)
a = func(dígito, 10, 18, 42); o a = func(dígito, 11, 18, 42, 15, 13); o a = func(dígito, 5);
double func(int num, ????)
{
return("suma de estos parámetros"/num);
}
así:
Dependiendo de la condición (NO si, pero básicamente, escribo estos números yo mismo)
a = func(dígito, 10, 18, 42); o a = func(dígito, 11, 18, 42, 15, 13); o a = func(dígito, 5);
double func(int num, ????)
{
return("suma de estos parámetros"/num);
}
Bueno, entonces, lo que primero vino a la mente, y como ya se ha sugerido aquí por encima - pasar en la función de la matriz doble, y en la función de calcular los valores necesarios de los valores de la matriz pasado - es posible conocer tanto la cantidad de números(tamaño de la matriz), y en consecuencia para calcular sus relaciones. Sólo la fórmula seguirá siendo la misma para cualquier tamaño de la matriz. Si va a cambiar la fórmula también, entonces sólo la matriz no funcionará para esto, tendrá que hacer un parámetro más - que apuntará a la fórmula correcta para el cálculo. Por ejemplo, puede pasar una enumeración que indique el tipo de fórmula (ENUM_TYPE_CALCULATED) y, basándose en el valor de esta enumeración, por ejemplo CALCULATE_SUMM, simplemente calcular (en este ejemplo) la suma de todos los valores del array pasado.
Así que los números que necesito pasar allí están fuera de orden, es decir, no se puede formar un universal
Aquí hay una respuesta completa, pero no hay respuesta...
Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias
Cualquier pregunta de los novatos en MQL4, ayuda y discusión sobre algoritmos y códigos
Alexey Kozitsyn, 2018.01.05 11:46
Puede establecer algunos parámetros de la función con un valor inicial (estos parámetros deben ser los últimos). Cuando llame a la función, podrá establecer estos parámetros o no, dependiendo de la necesidad. Si los parámetros no se fijan explícitamente - obtendrán valores iniciales.
La segunda opción es la sobrecarga. Simplemente escriba una función con el mismo nombre, sólo que con diferentes tipos/número de parámetros.
Aquí hay una respuesta en toda regla, pero no hay respuesta a ella...
Si el conjunto y el número de números no se conocen de antemano, no existe una función para cada nuevo conjunto.