Une manière transparente de gérer les paramètres

Traduit automatiquement de Deepl

Dans la déclaration d’une fonction ou d’une méthode, vous définissez explicitement ses paramètres. Ensuite, lorsque vous appelez cette fonction ou cette méthode, vous pouvez lui passer moins de paramètres si certains sont facultatifs. Ou, si vous avez utilisé la déclaration avec ${n}, le nombre de paramètres passés est variable. Dans ce cas, vous utilisez la commande Count Parameters avec une boucle sur les arguments. Ce code fonctionne parfaitement. Pourtant, il est un peu lourd.

Vous nous avez demandé une façon plus légère de gérer les paramètres, et nous vous avons écouté. À partir de 4D v19 R5, nous vous fournissons une nouvelle commande, Copy parametersqui vous permet d’écrire un code transparent, plus élégant et plus facile à lire.

Voyez la nouvelle commande en action.

Nouvelle commande

La nouvelle commande , Copy parametersrenvoie une collection des paramètres passés à une fonction ou à une méthode. Si vous passez le paramètre « startFrom« à la commande Copy parameters elle renvoie une collection qui contient l’élément de l’index « startFrom« .

Exemples

Manipulez les paramètres comme une collection. Par exemple, concaténer une chaîne de caractères avec les paramètres pour créer une liste HTML non ordonnée :

// 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>

Appelez une fonction différente en fonction du premier paramètre et passez les autres paramètres à cette méthode :

Function selectTask($task: Text)
Case of
: ($task= "Task1" )
This .task1(Copy parameters(2) )
: ($task= "Task2" )
This .task2(Copy parameters(2) )
End case

Ou bien, appelez une autre fonction sur un autre objet avec apply() et passez les paramètres :

Function doSomething($param: Text; $extraParameters: Variant)
This .delegate.doSomething.apply(This.delegate; Copy parameters)

Suivant

Vous pouvez lire la documentation pour plus d’informations. N’hésitez pas à partager vos idées et vos exemples sur le forum.

Vanessa Talbot
- Product Owner -Vanessa Talbot a rejoint l'équipe du programme 4D en juin 2014. En tant que Product Owner, elle est chargée de rédiger les user stories puis de les traduire en spécifications fonctionnelles. Son rôle est également de s'assurer que l'implémentation des fonctionnalités livrées répond aux besoins des clients.Depuis son arrivée, elle a travaillé à la définition des fonctionnalités clés de 4D. Elle a travaillé sur la plupart des nouvelles fonctionnalités de multithreading préemptif et aussi sur un sujet très complexe : la nouvelle architecture pour les applications enginées. Vanessa est diplômée de Telecom Saint-Etienne. Elle a commencé sa carrière à l'Institut de Recherche Criminelle en tant que développeur pour le département audiovisuel. Elle a également travaillé dans les domaines des médias et du médical en tant qu'experte en support technique, en production ainsi qu'en documentation de nouvelles fonctionnalités.