Vous êtes sur le site Web historique de la documentation de 4D. Les documentations sont progressivement déplacées vers developer.4d.com

Accueil

 
4D v19.8
Formula

Formula 


 

Formula ( expFormule ) -> Résultat 
Paramètre Type   Description
expFormule  Expression in Formule à retourner en objet
Résultat  Objet in Objet natif encapsulant la formule

Formula 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_OBJECT($f)
 $f:=Formula(1+2)
 $o:=New object("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 Formula 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_OBJECT($f)
 $f:=Formula($1+" "+$2)
 $text:=$f.call(Null;"Hello";"World") //retourne "Hello World"
 $text:=$f.call(Null;"Bienvenue en ";Chaîne(Year of(Current date))) //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_OBJECT($f)
 $f:=Formula(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_TEXT($0;$1;$2)
 If(Nombre de paramètres=2)
    $0:=$1+" "+$2
 Else
    $0:="How are you?"
 End if

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_OBJECT($f)
 $f:=Formula(1+2)
 
 C_OBJECT($o)
 $o:=New object("f";$f)
 
 $result:=$o.f() // retourne 3

Une formule utilisant des variables locales :

 $value:=10
 $o:=New object("f";Formula($value))
 $value:=20
 
 $result:=$o.f() // retourne 10

Une formule simple utilisant des paramètres :

 $o:=New object("f";Formula($1+$2))
 $result:=$o.f(10;20) //retourne 30

Une formule utilisant une méthode projet avec des paramètres :

 $o:=New object("f";Formula(myMethod))
 $result:=$o.f("param1";"param2") // équivalent à $result:=myMethod("param1";"param2")

En utilisant This :

 $o:=New object("Nomcomplet";Formula(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_OBJECT($calc;$feta;$robot)
 $robot:=New object("nom";"Robot";"prix";543;"quantité";2)
 $feta:=New object("nom";"Feta";"prix";12.5;"quantité";5)
 
 $calc:=Formula(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]"}



Voir aussi  

4D Blog - Formula: More power behind simplicity
4D Blog - Formula: Think outside the box
4D Blog - Write your own methods for objects
Formula from string
formula.source

 
PROPRIÉTÉS 

Produit : 4D
Thème : Formules
Numéro : 1597

Commande(s) éligible(s) à l'exécution dans un process préemptif

 
PAGE CONTENTS 
 
HISTORIQUE 

Créé : 4D v17 R3
Renommé : 4D v17 R6 (Formula)

 
UTILISATION DE L'ARTICLE

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)