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(); // nullLa 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); // nullCuriosamente, hace dos días, encontré el lenguaje
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