Nella dichiarazione di una funzione o di un metodo, si definiscono esplicitamente i suoi parametri. Poi, quando si chiama quella funzione o quel metodo, si possono passare meno parametri se alcuni sono opzionali. Oppure, se si usa la dichiarazione con ${n}, il numero di parametri passati è variabile. In questo caso, si usa il comando Count Parameters con un ciclo sugli argomenti. Questo codice funziona perfettamente. Tuttavia, è un po’ pesante.
Ci avete chiesto un modo più leggero per gestire i parametri e vi abbiamo ascoltato. A partire da 4D v19 R5, vi forniamo un nuovo comando, Copy parametersche consente di scrivere un codice più semplice, elegante e facile da leggere.
Guardate il nuovo comando in azione.
Nuovo comando
Il nuovo comando, Copy parametersrestituisce un insieme di parametri passati a una funzione o a un metodo. Se si passa il parametro “startFrom” al comando Copy parameters il comando restituisce un insieme che contiene l’elemento dall’indice “startFrom“.
Esempi
Manipolare i parametri come un insieme. Ad esempio, concatenare una stringa con i parametri per creare un elenco HTML non ordinato:
// 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>
Richiama una funzione diversa a seconda del primo parametro e passa gli altri parametri a questo metodo:
Function selectTask($task: Text)
Case of
: ($task="Task1")
This .task1(Copy parameters(2))
: ($task="Task2")
This .task2(Copy parameters(2))
End case
Oppure, chiamare un’altra funzione su un altro oggetto con apply() e passare i parametri:
Function doSomething($param: Text; $extraParameters: Variant)
This .delegate.doSomething.apply(This.delegate; Copy parameters)
Avanti
Per ulteriori informazioni, è possibile leggere la documentazione. Non esitate a condividere le vostre idee e i vostri esempi sul forum.