| 4D v18Formula | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|  | 
    4D v18
 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ückSie 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 ifParameter 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ückEine Formel mit lokalen Variablen:
 $value:=10
 $o:=New object("f";Formula($value))
 $value:=20
 
 $result:=$o.f() // gibt 10 zurückEine einfache Formel mit Parametern:
 $o:=New object("f";Formula($1+$2))
 $result:=$o.f(10;20) //gibt 30 zurückEine 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ückEine 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]"}
	Produkt: 4D
	Thema: Formel
	Nummer: 
        1597
        
        
        
	
	Erstellt: 4D v17 R3
	Umbenannt: 4D v17 R6
	
	4D Programmiersprache ( 4D v18)
	
	
	
 Fehler melden
Fehler melden