En la declaración de una función o método, se definen explícitamente sus parámetros. Luego, al llamar a esa función o método, puedes pasarle menos parámetros si algunos son opcionales. O bien, si has utilizado la declaración con ${n}, el número de parámetros pasados es variable. En este caso, se utiliza el comando Count Parameters con un bucle sobre los argumentos. Este código funciona perfectamente. Sin embargo, es un poco pesado.
Nos habéis pedido una forma más ligera de manejar los parámetros, y os hemos escuchado. A partir de 4D v19 R5, le proporcionamos un nuevo comando, Copy parameters, que le permitirá escribir un código más fluido, elegante y fácil de leer.
Vea el nuevo comando en acción.
Nuevo comando
El nuevo comando, Copy parameters, devuelve una colección de los parámetros pasados a una función o a un método. Si se pasa el parámetro «startFrom«al comando Copy parameters devuelve una colección que contiene el elemento del índice «startFrom«.
Ejemplos
Manipule los parámetros como una colección. Por ejemplo, concatenar una cadena con los parámetros para crear una lista HTML desordenada:
// Class
)
Function list() -> $html: Text
var $value : Collection
$value :=Copy parameters
$html :="<ul><li>"
$html +=$value.join("</li><li>")
$html +="</li></ul>"
return $html
// Method
$htmlList :=$c.list("Alpha"; "Bravo"; "Charlie"
// $htmlList: <ul><li>Alpha</li><li>Bravo</li><li>Charlie</li></ul>
Llama a una función diferente dependiendo del primer parámetro y pasa los otros parámetros a este método:
Function selectTask($task: Text)
Case of
: ($task="Task1")
This .task1(Copy parameters(2))
: ($task="Task2")
This .task2(Copy parameters(2))
End case
O bien, llamar a otra función en otro objeto con apply() y pasar los parámetros:
Function doSomething($param: Text; $extraParameters: Variant)
This .delegate.doSomething.apply(This.delegate; Copy parameters)
Siguiente
Puedes leer la documentación para obtener más información. No dudes en compartir tus ideas y ejemplos en el foro.