Eine andere Art der Kodierung: Objektnotation

Automatisch übersetzt von Deepl

Objekte sind großartig, das sagen alle. Neben ihrer wunderbaren Flexibilität sind sie auch unglaublich schnell. Sie können Millionen von Datensätzen in nur einem Bruchteil einer Sekunde durchsuchen. 4D v16 ermöglicht sogar die Sortierung nach Objektattributen und die Durchführung von Berechnungen wie Summe oder Durchschnitt.

Mit 4D v16 R4 wurde die 4D Sprache drastisch verbessert, um die Verwendung von Objekten viel komfortabler zu machen – mit der Unterstützung der Objektnotation. Schnell, flexibel, effizient und jetzt auch elegant!

Was ist möglich?

Objekte in der 4D Sprache können mit der Standard-Objektnotation behandelt werden, um ihre Werte zu erhalten oder zu setzen. Mit der Objektnotation:

  • Auf Objekteigenschaften kann mit einem „Punkt“-Symbol zugegriffen werden (z.B. employee.name)
  • Auf Objektsammlungselemente kann mit eckigen Klammern zugegriffen werden (z. B. rooms[2])
  • Auf eingebettete Unterobjekte und Eigenschaften von Unterobjekten kann durch eine Folge von Symbolen zugegriffen werden (z. B. Mitarbeiter.Kinder[2].Alter).

Gute Nachrichten, jetzt haben Sie ein Mittel, um all diese Dinge loszuwerden OB Get und OB SET in Ihrem Code loszuwerden! Und wissen Sie was? Die Codeausführung ist mit der Objektnotation 10 Mal schneller als mit OB Get/OB SET Verwendung!

Beispiele für die Objektnotation

Nehmen wir an, wir haben ein $o Objekt, das die folgenden Informationen enthält:

{
    "Lastname": "Doe",
    "Firstname": "John",
    "Avatar": "[object Picture]"
    "Child": [{ 
        "Name": "Susan", 
        "Age": 3
    } , { 
        "Name": "Bob", 
        "Age": 8 
    }] 
}

Zum Abrufen des Attributs „Firstname“ Attribut abzurufen, schreiben Sie:

Mit Objektnotation

C_TEXT($name)
$name :=$o.Vorname

Ohne Objektnotation

C_TEXT($name)
$name :=OB Get($o; "Vorname")

Zum Abrufen des „Name“ der zweiten Kinder abzurufen, schreiben Sie:

Mit Objektschreibweise

C_TEXT($name)
$name :=$o.Kind[1].Name

Ohne Objektnotation

ARRAY OBJECT($aChild;0)
C_TEXT ($name)
OB GET ARRAY ($o; "Kind";$aChild)
$name :=OB GET($aChild{2}; "Name")

Um ein weiteres Kind hinzuzufügen, schreibt man:

Mit der Objektnotation

$o.Kind[2].Name:="Mike"
$o .Kind[2].Alter:=9

Ohne Objektnotation

ARRAY OBJECT($aChild;0)
C_OBJECT ($kid)
OB GET ARRAY ($o; "Kind";$aChild)
OB SET ($kid; "Name"; "Mike")
OB SET ($kid; "Alter";9)
APPEND TO ARRAY ($aChild;$kid)
OB SET ARRAY ($o; "Kind";$aChild)

Lesen Sie mehr über Sammlungen >

Um ein Bild in ein Objektattribut einzufügen, schreiben Sie:

Mit der Objektnotation

C_PICTURE($img)
READ PICTURE FILE
("img.jpg";$img )
$o .Avatar:=$img

Ohne die Objektnotation

C_PICTURE($img )
READ PICTURE FILE ("img.jpg";$img )
OB SET ($o; "avatar";$img)

Lesen Sie mehr über Bilder in Objekten >

Um die Zeiger-Notation zu verwenden, schreiben Sie:

Mit der Objektnotation

C_POINTER($p)
$p :=->$o
...
C_TEXT ($name)
$name :=$p->Vorname

Ohne Objektschreibweise

C_POINTER($p)
$p :=->$o
...
C_TEXT ($name)
$name :=OB Get($p->; "Vorname")

Wie kann ich die Objektnotation aktivieren?

Um die Objektnotation nutzen zu können, müssen Sie im Dialogfeld „Datenbankeinstellungen“ auf die Seite „Kompatibilitätseinstellungen“ gehen und auf die Schaltfläche „Objektnotation aktivieren“ klicken:

Es gibt einige Voraussetzungen, bevor Sie die Objektnotation aktivieren können, aber wir helfen Ihnen bei der Vorbereitung:

Bereiten Sie sich auf die Objektnotation vor >

Vanessa Talbot
Product Owner - Vanessa Talbot kam im Juni 2014 zum 4D Programmteam. Als Product Owner ist sie für das Schreiben der User Stories und deren Umsetzung in funktionale Spezifikationen zuständig. Ihre Aufgabe ist es auch, sicherzustellen, dass die Implementierung der Funktionen den Anforderungen des Kunden entspricht. Seit ihrer Ankunft hat sie an der Definition der wichtigsten Funktionen in 4D gearbeitet. Sie hat an den meisten der neuen Funktionen für präemptives Multi-Threading gearbeitet und auch an einem sehr komplexen Thema: der neuen Architektur für erstellte Anwendungen. Vanessa hat einen Abschluss von der Telecom Saint-Etienne. Sie begann ihre Karriere am Criminal Research Institute als Entwicklerin für die audiovisuelle Abteilung. Sie hat auch in den Bereichen Medien und Medizin als Expertin für technischen Support, Produktion und die Dokumentation neuer Funktionen gearbeitet.