Dies ist die alte 4D Dokumentations-Website. Die neue und aktualisierte Dokumentation finden Sie unter developer.4d.com

Home

 
4D v19.8
Formula

Formula 


 

Formula ( formulaExp ) -> Funktionsergebnis 
Parameter Typ   Beschreibung
formulaExp  Ausdruck in Formel zur Rückgabe als Objekt
Funktionsergebnis  Objekt in 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]"}



Siehe auch 

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

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: Formel
Nummer: 1597

Dieser Befehl kann in preemptive Prozessen laufen

 
SEITENINHALT 
 
GESCHICHTE 

Erstellt: 4D v17 R3
Umbenannt: 4D v17 R6 (Formula)

 
ARTIKELVERWENDUNG

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)