Vous êtes sur le site Web historique de la documentation de 4D. Les documentations sont progressivement déplacées vers developer.4d.com |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v19.8
Formule
|
Formule ( expFormule ) -> Résultat | ||||||||
Paramètre | Type | Description | ||||||
expFormule | Expression |
![]() |
Formule à retourner en objet | |||||
Résultat | Objet |
![]() |
Objet natif encapsulant la formule | |||||
Formule crée un objet formule basé sur expFormule. Le paramètre expFormule peut être aussi simple qu'une valeur unique. Il peut aussi être complexe, comme une méthode projet avec des paramètres.
Avoir une formule comme objet permet à l'objet d'être passé en paramètre (attribut calculé) à des commandes ou à des méthodes ou d'être exécuté depuis des composants sans avoir à les déclarer comme "partagée entre composants et base hôte". Lorsqu'il est appelé, l'objet formule est évalué dans le contexte de la base de données ou du composant qui l'a créé.
La formule retournée peut être appelée à l'aide :
C_OBJET($f)
$f:=Formule(1+2)
$o:=Creer objet("myFormula";$f)
//trois différentes façons d'appeler la formule
$f.call($o) //retourne 3
$f.apply($o) //retourne 3
$o.myFormula() //retourne 3
Vous pouvez préciser l'objet sur lequel la formule est exécutée, comme indiqué plus bas dans l'exemple 5. Vous pouvez alors accéder aux propriétés de l'objet via la commande This.
Si expFormule utilise des variables locales, leurs valeurs sont copiées et stockées dans l'objet formule retourné lorsqu'il est créé. Lorsqu'elle est exécutée, la formule utilise ces valeurs copiées plutôt que la valeur courante des variables locales. Notez que l'utilisation de tableaux en tant que variables locales n'est pas prise en charge.
L'objet créé par Formule peut être enregistré, par exemple, dans un champ de la base de données ou dans un document blob.
Vous pouvez passer des paramètres à la formule à l'aide du mécanisme standard $1, $2...,$n. Par exemple, vous pouvez écrire :
C_OBJET($f)
$f:=Formule($1+" "+$2)
$text:=$f.call(Null;"Hello";"World") //retourne "Hello World"
$text:=$f.call(Null;"Bienvenue en ";Chaîne(Annee de(Date du jour))) //retourne "Bienvenue en 2019" (par exemple)
Pour plus de commodité, les paramètres peuvent être omis lors de l'initialisation de l'objet formule lorsque la formule est constituée d'une seule méthode projet. Ils peuvent être passés simplement lorsque la formule est appelée. Par exemple :
C_OBJET($f)
$f:=Formule(myMethod)
//Ecrire une formule(myMethod($1;$2) n'est pas nécessaire
$text:=$f.call(Null;"Hello";"World") //retourne "Hello World"
$text:=$f.call() //retourne "How are you?"
//myMethod
C_TEXTE($0;$1;$2)
Si(Nombre de paramètres=2)
$0:=$1+" "+$2
Sinon
$0:="How are you?"
Fin de si
Les paramètres sont reçus dans $1, $2... à l'intérieur de la méthode, dans l'ordre dans lequel ils sont appelés.
Note : Veillez à ne pas confondre les paramètres $n utilisés dans la formule avec les paramètres $n reçus dans la méthode appelée dans la formule.
Une formule simple :
C_OBJET($f)
$f:=Formule(1+2)
C_OBJET($o)
$o:=Creer objet("f";$f)
$result:=$o.f() // retourne 3
Une formule utilisant des variables locales :
$value:=10
$o:=Creer objet("f";Formule($value))
$value:=20
$result:=$o.f() // retourne 10
Une formule simple utilisant des paramètres :
$o:=Creer objet("f";Formule($1+$2))
$result:=$o.f(10;20) //retourne 30
Une formule utilisant une méthode projet avec des paramètres :
$o:=Creer objet("f";Formule(myMethod))
$result:=$o.f("param1";"param2") // équivalent à $result:=myMethod("param1";"param2")
En utilisant This :
$o:=Creer objet("Nomcomplet";Formule(This.prenom+" "+This.nom))
$o.prenom:="John"
$o.nom:="Smith"
$result:=$o.nomComplet() //retourne "John Smith"
En appelant une formule à l'aide de la notation objet :
C_OBJET($calc;$feta;$robot)
$robot:=Creer objet("nom";"Robot";"prix";543;"quantité";2)
$feta:=Creer objet("nom";"Feta";"prix";12.5;"quantité";5)
$calc:=Formule(This.total:=This.prix*This.quantité)
//fixe la formule aux propriétés de l'objet
$feta.calc:=$calc
$robot.calc:=$calc
//appelle la formule
$feta.calc() // $feta={nom:Feta,prix:12.5,quantité:5,total:62.5,calc:"[objet Formule]"}
$robot.calc() // $robot={nom:Robot,prix:543,quantité:2,total:1086,calc:"[objet Formule]"}
4D Blog - Formula: More power behind simplicity
4D Blog - Formula: Think outside the box
4D Blog - Write your own methods for objects
formula.source
Formule sur chaine
Produit : 4D
Thème : Formules
Numéro :
1597
Nom intl. : Formula
Créé : 4D v17 R3
Renommé : 4D v17 R6 (Formule)
4D - Langage ( 4D v19)
4D - Langage ( 4D v19.1)
4D - Langage ( 4D v19.4)
4D - Langage ( 4D v19.5)
4D - Langage ( 4D v19.6)
4D - Langage ( 4D v19.7)
4D - Langage ( 4D v19.8)