Aller au contenu principal
Version: Next

Formula

Historique
ReleaseModifications
17 R6Renommée (New formula -> Formula)
17 R3Ajout

Formula ( formulaExp : Expression ) : 4D.Function

ParamètresTypeDescription
formulaExpExpressionFormule à retourner comme objet
Résultat4D.FunctionFonction native encapsulant la formule

Description

La commande Formula crée un objet 4D Function basé sur l'expression formulaExp. .

Le fait d'avoir une formule en tant qu'objet permet de la passer en tant que paramètre (champ calculé) à des commandes ou à des méthodes ou de l'exécuter à partir de divers composants sans avoir à les déclarer comme "partagés par les composants et la base de données hôte". Lorsqu'il est appelé, l'objet formula 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 avec :

 var $f : 4D.Function
$f:=Formula(1+2)
$o:=New object("myFormula";$f)

//three different ways to call the formula
$f.call($o) //retourne 3
$f.apply($o) //retourne 3
$o.myFormula() //retourne 3

Vous pouvez passer des paramètres à Formula, comme le montre l'exemple 4 ci-dessous.

Vous pouvez indiquer l'objet sur lequel la formule est exécutée, comme le montre l'exemple 5. Les propriétés de l'objet sont alors accessibles via la commande This.

Si formuleExp utilise des variables locales, leurs valeurs sont copiées et stockées dans l'objet formule retourné lors de sa création. Lors de son exécution, la formule utilise ces valeurs copiées plutôt que la valeur courante des variables locales. A noter que l'utilisation de tableaux comme variables locales n'est pas prise en charge.

L'objet créé par Formula peut être enregistré, par exemple, dans un champ de base de données ou dans un document blob.

Exemple 1

Une formule simple :

 var $f : 4D.Function
$f:=Formula(1+2)

var $o : Object
$o:=New object("f";$f)

$result:=$o.f() // retourne 3

Exemple 2

Une formule utilisant des variables locales :



$value:=10
$o:=New object("f";Formula($value))
$value:=20

$result:=$o.f() // returns 10

Exemple 3

Une formule simple utilisant des paramètres :

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

Exemple 4

Une formule simple utilisant des paramètres :

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

Exemple 5

Avec l'utilisation de This :

 $o:=New object("fullName";Formula(This.firstName+" "+This.lastName))
$o.firstName:="John"
$o.lastName:="Smith"
$result:=$o.fullName() //retourne "John Smith"

Exemple 6

Appeler une formule à l'aide de la notation objet :

 var $feta; $robot : Object
var $calc : 4D.Function
$robot:=New object("name";"Robot";"price";543;"quantity";2)
$feta:=New object("name";"Feta";"price";12.5;"quantity";5)

$calc:=Formula(This.total:=This.price*This.quantity)

//affecte la formule aux propriétés d'objet
$feta.calc:=$calc
$robot.calc:=$calc

//appel de la formule
$feta.calc() // $feta={name:Feta,price:12.5,quantity:5,total:62.5,calc:"[object Formula]"}
$robot.calc() // $robot={name:Robot,price:543,quantity:2,total:1086,calc:"[object Formula]"}

Voir également

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