Cantidad variable de Argumentos en AjSharp

Published on Author lopezLeave a comment

En mis experimentos con agentes, usando el intérprete AjSharp, encontré que me faltaba algo para implementar lo que quería: soportar una cantidad variable de parámetros en la llamada a una función, rutina o método. Así, que volví a codificar, con el sombrero de Test-Driven Development puesto, durante un desayuno de codificación, y salió lo que describo en este post.

Tuve que implementar dos facetas de esa característica. Primero, la declaración de recibir una cantidad variable de argumentos:

function FirstParameter(pars...)
{
	if (pars.Length>0)
		return pars[0];
		
	return null;
}
function SecondParameter(pars...)
{
	if (pars.Length>1)
		return pars[1];
		
	return null;
}
result = FirstParameter(1,2,3);		// 1
result2 = SecondParameter(1,2,3);	// 2
result3 = SecondParameter();		// null

La otra parta, qué pasa si quiero usar los parámetros recibidos con … (tres puntos) como parámetros para entregar a otra función? El pars… recibido es un arreglo de objetos. Para usarlo pasándolo no como arreglo, sino como los propios valores “expandidos”, usé el mismo operador … (tres puntos), pero ahora, desde la invocación:

function FirstParameter(pars...)
{
	if (pars.Length>0)
		return pars[0];
		
	return null;
}
function SecondParameter(pars...)
{
	if (pars.Length>1)
		return pars[1];
		
	return null;
}
function JustDoIt(fn,pars...)
{
	return fn(pars...);
}
result = JustDoIt(FirstParameter,1,2,3);		// 1
result2 = JustDoIt(SecondParameter,1,2,3);	// 2
result3 = JustDoIt(SecondParameter);		// null

Curiosamente, hace dos días, encontré el lenguaje

CoffeeScript

que compila a JavaScript normal. En la página de tutorial, encontré un término nuevo para mí : Splats para denominar el operador … (tres puntos). Decidí usar ese operador hace unas semanas, y ahora me lo encuentro ahí. No recuerdo cuándo fue que se sembró en mi mente la idea de usar ese operador.

Podría emplear este operador en algún ejemplo de agente.

Nos leemos!

Angel "Java" Lopez

http://www.ajlopez.com

http://twitter.com/ajlopez

Leave a Reply

Your email address will not be published. Required fields are marked *