Schleifen, Schleifen und … noch mehr Schleifen!

Automatisch übersetzt von Deepl

Wie viele andere Programmiersprachen bietet auch 4D die Möglichkeit, über Zahlen mit einer For(…) / End for Anweisung zu iterieren, oder über eine Bedingung dank der While(…)/End while und Repeat/Until(…) Schlüsselwörter. Diese Iterationen (oder Schleifen) sind sehr nützlich, aber nicht der geeignetste Weg, um über fortgeschrittene Datentypen wie Sammlungen und Entity-Auswahlen zu iterieren. Aus diesem Grund wurde der neue For each(…)/End for each Iterator geschaffen worden, um Ihnen die Programmierung zu erleichtern!

Datenbank-Beispiel

Schleife durch die Sammlungselemente

Die For each / End for each Anweisung kann in mehreren Fällen verwendet werden. Ein Fall ist die Schleifenbildung durch Elemente einer Sammlung. Es ist nicht notwendig, vor dem Eintritt in die Schleife zu wissen, wie viele Elemente zur Sammlung gehören. Bei jeder Iteration wird die als erster Parameter übergebene Variable(item) mit dem aktuellen Element der Sammlung(col) gefüllt.

col:=New collection("charlie"; "delta"; "uniform"; "foxtrot"; "quebec")
$count :=0
For each (item;col)
If (Length(item)>5)
$count :=$count+1
End if
End for each
ALERT (String($count)+" Wörter gefunden!")

Schleifen durch Entitäten

Der zweite Fall ist auch der neueste: Schleifen durch Entitäten einer Entitätsauswahl. Entitäten und Entitätsselektionen sind Teil eines neuen Konzepts in 4D, das in diesem Blogbeitrag beschrieben wird. Das Wichtigste, was Sie wissen müssen, ist, dass Entitäten ähnlich wie Datensätze sind und Entitätsselektionen mit traditionellen Selektionen verglichen werden können, aber beide werden als Objekte deklariert!

Auch hier ist es nicht notwendig, vor dem Eintritt in die Schleife zu wissen, wie viele Entitäten zur Entitätsauswahl gehören. Bei jeder Iteration wird die Entitätsvariable, die als erster Parameter übergeben wird, automatisch mit der aktuellen Entität der Entitätsauswahl gefüllt.

UK_emps:=ds.Mitarbeiter.query("country='UK'")
// Browse the entity selection
For each (emp;UK_emps)
emp. salary :=emp.salary*1.03 // raise the salary
emp .save()
// save the result
End for each

Schleifen durch Objekteigenschaften

Die For each / End for each Anweisung kann auch in einem anderen Fall verwendet werden: in einer Schleife über Objekteigenschaften. Sie kann zum Beispiel sehr nützlich sein, wenn Sie einen generischen Code schreiben wollen, ohne die Namen der Objekteigenschaften im Voraus zu kennen.

Auch hier müssen Sie nicht im Voraus wissen, wie viele Eigenschaften ein Objekt hat, bevor Sie die Schleife betreten! Die Namen aller Eigenschaften werden nacheinander analysiert! Bei jeder Iteration wird die Variable, die als erster Parameter übergeben wird(property im Beispiel unten), mit dem Attributnamen des Objekts gefüllt($contact im Beispiel unten).

For each ($property;$contact)
If (Value type($contact[$property])=Is text)
//Change to uppercase each attribute which is a text
$contact[$property]:=Uppercase($contact[$property])
End if
End for each

Roland Lannuzel
- Product Owner & 4D Experte - Nach seinem Studium der Elektronik arbeitete Roland als Entwickler und Berater in der industriellen IT-Branche, wo er Lösungen für Kunden mit einer Vielzahl von Datenbanken und Technologien entwickelte. In den späten 80er Jahren verliebte er sich in 4D und setzte es bei der Entwicklung von Geschäftsanwendungen wie Buchhaltungs-, Abrechnungs- und E-Mail-Systemen ein. 1997 trat er schließlich in das Unternehmen ein und leistete einen wertvollen Beitrag, indem er Spezifikationen, Testtools und Demos entwarf, Schulungen durchführte und auf vielen Konferenzen für die 4D Community sprach. Er gestaltet die Zukunft von 4D aktiv mit, indem er neue Funktionen und Datenbankentwicklungstools definiert.