Écrire vos propres méthodes pour les objets

Traduit automatiquement de Deepl

Une nouvelle commande est à votre disposition pour vous permettre d’utiliser des formules dans votre code. Vous pouvez désormais les encapsuler dans des objets et les appeler en cas de besoin. Il n’y a plus besoin d’écrire votre code sous forme de texte. Maintenant, vous pouvez simplement passer votre formule dans votre commande et c’est tout ! C’est un excellent ajout, puisque votre code n’est pas du texte, vous pouvez bénéficier de la coloration syntaxique et de toutes les autres fonctionnalités avancées de l’éditeur de code !

Encapsuler une formule dans un objet

Avec la commande Formula il est très simple d’encapsuler une formule dans un objet :

$f:=Formula(ALERT("Hello world"))

Et bien sûr, puisque la formule est encapsulée dans un objet, vous pouvez l’encapsuler dans une propriété d’un objet et créer vos propres méthodes d’objet encapsulé:

$f:=New object
$f .message:=Formula(ALERT("Hello world"))
$f .message() // Display alert dialog box with the message "Hello world"

Si vous voulez passer des paramètres à votre formule, utilisez simplement $1, $2 … comme dans vos méthodes :

$f:=New object
$f .message:=Formula(ALERT("Hello "+$1))
$f .message("John")
// Display alert dialog box with the message "Hello John"

Ou si vous voulez utiliser la valeur d’un attribut d’un objet, la commande This est la solution :

$f:=New object
$f .text:= "Hello World"
$f .message:=Formula(ALERT(This.text))
$f .message()
// Display alert dialog box with the message "Hello world"

Enfin, vous pouvez utiliser une méthode comme une formule :

$person:=New object
$person .firstName:= "John"
$person .lastName:= "Smith"
$person .greeting:=Formula(Greeting )
$g :=$person.greeting("hello")
// $g:="hello John Smith"
$g:=$person.greeting("hi")
// $g:="hi John Smith"

Avec la Greeting la méthode :

$0:=$1+ " "+This.firstName+" "+This.lastName

Vous trouverez d’autres exemples d’utilisation de Formula dans cette HDI :

HDI_NouvelleFormule

Appel de votre formule

Vous pouvez également exécuter un objet de formule sans le définir comme propriété d’un autre objet en utilisant les touches call() et apply().

$f:=Formula(ALERT(String($1+" "+$2))
$f .call(null ; "Hello" ; "world")
$f .apply(null;New collection ("Hello" ; "world"
) //formula.apply object methods

Encapsuler une formule dans un objet à partir d’une chaîne de caractères

Il est possible d’utiliser une version texte d’une formule pour créer une méthode avec la méthode Formula from string commande :

$textFormula:=Request("Veuillez saisir une formule")
If (ok=1)
$f :=Formula from string($textFormula)
ALERT ("Résultat = "+String($f.call ()))
End if

Fabrice Mainguené
- Product Owner -Fabrice Mainguené a rejoint l'équipe du programme 4D en novembre 2016. En tant que Product Owner, il est en charge 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 de la fonctionnalité livrée répond au besoin du client.Après avoir obtenu une licence en informatique au CNAM, Fabrice a rejoint une petite société d'édition de logiciels en tant que développeur Windev. Il a ensuite travaillé pour différentes entreprises dans les domaines de l'industrie et du commerce en tant que développeur Windev et web ainsi que conseiller technique sur les nouvelles fonctionnalités.