Dies ist die alte 4D Dokumentations-Website. Die neue und aktualisierte Dokumentation finden Sie unter developer.4d.com |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v19.8
Formula
|
Formula ( formulaExp ) -> Funktionsergebnis | ||||||||
Parameter | Typ | Beschreibung | ||||||
formulaExp | Ausdruck |
![]() |
Formel zur Rückgabe als Objekt | |||||
Funktionsergebnis | Objekt |
![]() |
Natives Objekt, das die Formel einbindet | |||||
Hinweis: Der Befehl wurde in v17 R6 umbenannt, er hieß bisher New Formula.
Formula erstellt eine Formel als Objekt gemäß dem Ausdruck formulaExp. Das kann einfach ein einzelner Wert sein oder komplex wie eine Projektmethode mit Parametern.
Eine Formel als Objekt lässt sich als Parameter (berechnetes Attribut) an Befehle oder Methoden übergeben oder von verschiedenen Komponenten ausführen, ohne sie als "von Komponenten und Host Datenbank gemeinsam genutzt" deklarieren zu müssen. Eine aufgerufene Formel als Objekt wird im Kontext der jeweiligen Datenbank oder Komponente bewertet, die dieses Objekt erstellt hat.
Die zurückgegebene Formel lässt sich aufrufen mit:
C_OBJECT($f)
$f:=Formula(1+2)
$o:=New object("myFormula";$f)
//es gibt drei unterschiedliche Wege zum Aufrufen der Formel
$f.call($o) //gibt 3 zurück
$f.apply($o) //gibt 3 zurück
$o.myFormula() //gibt 3 zurück
Sie können auch ein bestimmtes Objekt zum Ausführen der Formel angeben (siehe unten in Beispiel 5). Die Eigenschaften des Objekts sind dann über den Befehl This zugänglich.
Verwendet formulaExp lokale Variablen, werden ihre Werte kopiert und beim Anlegen im zurückgegebenen Objekt Formel gespeichert. Die Formel verwendet beim Ausführen diese kopierten Werte und nicht den aktuellen Wert der lokalen Variablen. Beachten Sie, dass Arrays als lokale Variablen nicht unterstützt werden.
Das mit Formula erstellte Objekt lässt sich sichern, z.B. in einem Feld der Anwendung oder in einem Blob Dokument.
Sie können Parameter mit den Standards $1, $2...,$ in der Formel übergeben. Sie können z.B. schreiben:
C_OBJECT($f)
$f:=Formula($1+" "+$2)
$text:=$f.call(Null;"Hello";"World") //gibt "Hello World" zurück
$text:=$f.call(Null;"Welcome to ";String(Year of(Current date))) //gibt "Welcome to 2019" zurück (Beispiel)
Zur Vereinfachung des Code können Parameter beim Initialisieren des Objekts Formel weggelassen werden, wenn die Formel aus einer einzelnen Projektmethode besteht. Es genügt, sie beim Aufrufen der Formel zu übergeben. Zum Beispiel:
C_OBJECT($f)
$f:=Formula(myMethod)
//Sie müssen nicht schreiben: Formula(myMethod($1;$2)
$text:=$f.call(Null;"Hello";"World") //gibt "Hello World" zurück
$text:=$f.call() //gibt "How are you?" zurück
//myMethod
C_TEXT($0;$1;$2)
If(Count parameters=2)
$0:=$1+" "+$2
Else
$0:="How are you?"
End if
Parameter werden in $1, $2... innerhalb der Methode in der Reihenfolge empfangen, wie sie im Aufruf angegeben sind.
Hinweis: Verwechseln Sie nicht $n Parameter innerhalb der Formel mit $n Parametern, die in der innerhalb der Formel aufgerufenen Methode method empfangen werden.
Eine einfache Formel:
C_OBJECT($f)
$f:=Formula(1+2)
C_OBJECT($o)
$o:=New object("f";$f)
$result:=$o.f() // gibt 3 zurück
Eine Formel mit lokalen Variablen:
$value:=10
$o:=New object("f";Formula($value))
$value:=20
$result:=$o.f() // gibt 10 zurück
Eine einfache Formel mit Parametern:
$o:=New object("f";Formula($1+$2))
$result:=$o.f(10;20) //gibt 30 zurück
Eine Formel mit einer Projektmethode mit Parametern:
$o:=New object("f";Formula(myMethod))
$result:=$o.f("param1";"param2") // entspricht $result:=myMethod("param1";"param2")
This verwenden:
$o:=New object("fullName";Formula(This.firstName+" "+This.lastName))
$o.firstName:="John"
$o.lastName:="Smith"
$result:=$o.fullName() //gibt "John Smith" zurück
Eine Formel mit Objektnotation verwenden:
C_OBJECT($calc;$feta;$robot)
$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)
//die Formel in Objekteigenschaften setzen
$feta.calc:=$calc
$robot.calc:=$calc
//die Formel aufrufen
$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]"}
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
Produkt: 4D
Thema: Formel
Nummer:
1597
Erstellt: 4D v17 R3
Umbenannt: 4D v17 R6 (Formula)
4D Programmiersprache ( 4D v19)
4D Programmiersprache ( 4D v19.1)
4D Programmiersprache ( 4D v19.4)
4D Programmiersprache ( 4D v19.5)
4D Programmiersprache ( 4D v19.6)
4D Programmiersprache ( 4D v19.7)
4D Programmiersprache ( 4D v19.8)