Argumentos variables
Desde la
versión 5.0 de Java existe la característica de varargs que permite
que un método reciba un número variable de argumentos. Por ejemplo:
public
int calcularSuma(int
... valores){
int
sum = 0;
for(int
i = 0; i < valores.length; i++){
sum
+= valores[i];
}
return
sum;
}
El anterior
método retorna la suma de los valores pasados como parámetro. Lo
importante es que la cantidad de valores que se le puede pasar es
variable. Vea las siguientes llamadas:
calcularSuma(1,
2, 3);
//
Retorna 6.
calcularSuma(1,
2, 3, 4, 5, 6);
//
Retorna 21.
calcularSuma();
//
Retorna 0.
Vemos como
el mismo método puede recibir diferentes cantidad de parámetros (en
este artículo las palabras parámetro y argumento se usan
indistintamente). Notar que los parámetros adentro del método se
procesan como si fuera un array.
De la misma
manera, los programadores de C# pueden usar la palabra clave params y
también existe una alternativa para los Pythoneros.
Bien, lo
que nos ocupa a nosotros ahora es como hacer esto en PHP. Para esto
existen 3 funciones:- func_num_args(void)
- func_get_args(void)
- func_get_arg(int $arg_num)
Estas
funciones permiten consultar y manipular los argumentos pasados a una
función. La primera función func_num_args(void)
retorna la cantidad de argumentos pasados a una función. La segunda
función func_get_args(void)
retorna un array con los argumentos pasados y, por último, la
tercera función retorna el argumento en la posición $arg_num.
Así, por ejemplo, la siguiente función retornará la cantidad de
parámetros que le fueron pasados:
function
varargs(){
$cantidad = func_num_args();
return
$cantidad;
}
Algunos ejemplos de llamadas son:
varargs(1, 5)
//
Retorna 2.
varargs(1, 5, 5, 6, 2, 3)
//
Retorna 6.
varargs(1)
//
Retorna 1.
Ahora como
un ejemplo más complejo podemos presentar la siguiente función que
calcula la suma de argumentos variables.
function
calcular_suma(){
$cantidad = func_num_args();
$argumentos = func_get_args();
// Retorna
un array.
$suma
= 0;
for($i
= 0; $i < $cantidad; $i++){
$suma += $argumentos[$i];
}
return $suma;
}
O en su
alternativa equivalente:
function
calcular_suma(){
$cantidad = func_num_args();
$argumentos = func_get_args();
$suma
= 0;
for($i
= 0; $i < $cantidad; $i++){
$suma += func_get_arg($i);
}
return
$suma;
}
Vemos que
el manejo de varargs es sencillo pero diferente al resto de los
lenguajes.
Bibliografía