- parámetros opcionales
- parámetros nominados
Muchas veces pasa que se agregan parámetros a un objeto GeneXus, porque se precisa pasarlos desde uno de los llamadores, pero no queremos que el resto de los programas llamadores cambien.
Lo que hacemos hoy es modificar todos los llamadores, agregando un nuevo parámetro con un valor que sería el valor por defecto.
Sería bueno tener la posibilidad de definir que un parámetro es opcional e indicarle cual es el valor por defecto. La definicón podría ser algo así:
parm(in:&par1, in:&par2=0, out:&result);En este ejemplo el parámetro &par2 sería opcional, y si no se especifica el valor que se usaría en el objeto sería cero, que es el valor que se le da por defecto.
La invocación podría ser así, si se quiere usar el valor por defecto:
&result = Programa.udp(1)o así, si se quiere especificar otro valor:
&result = Programa.udp(1, 2)Parámetros nominados
Otra característica que tienen los parámetros en los objetos GeneXus es que son posicionales.
Como está hoy no hay problema, pero si se permitiera tener parámetros opcionales, se podría plantear el problema que quiero pasarle solo uno de los N parámetros opcionales, lo que no se podría hacer a menos que justo le quiera pasar el primero de la lista.
Algo así:
parm(in:&par1=0, in:&par2=0, in:&par3=0);¿Cómo hago para pasarle un valor distinto de cero solo a la variable &par2?
La solución podría ser indicarle el nombre del parámetro en la invocación. La sintaxis puede variar...
Programa.call(@&par2=1)La @ es para indicarle que es el nombre del parámetro y no una variable en el contexto del programa llamador...
2 comentarios: