Un altro modo di codificare: Notazione ad oggetti

Tradotto automaticamente da Deepl

Gli oggetti sono fantastici, lo dicono tutti. Oltre alla loro straordinaria flessibilità, sono incredibilmente veloci. È possibile cercare tra milioni di record in una frazione di secondo. 4D v16 consente persino di ordinare in base agli attributi degli oggetti e di eseguire calcoli come la somma o la media.

Con 4D v16 R4, il linguaggio 4D è stato drasticamente migliorato per rendere l’uso degli oggetti molto più comodo, grazie al supporto della notazione degli oggetti. Veloce, flessibile, efficiente e ora anche elegante!

Cosa è possibile fare?

Gli oggetti del linguaggio 4D possono essere gestiti utilizzando la notazione standard degli oggetti per ottenere o impostare i loro valori. Con la notazione a oggetti:

  • si può accedere alle proprietà degli oggetti utilizzando il simbolo del “punto” (ad esempio, employee.name)
  • si può accedere agli elementi della collezione di oggetti usando le parentesi quadre (ad esempio, stanze[2])
  • si può accedere a sotto-oggetti e proprietà di sotto-oggetti incorporati tramite una sequenza di simboli (ad esempio, employee.children[2].age).

Buone notizie, ora avete un mezzo per sbarazzarvi di tutte quelle OB Get e OB SET nel vostro codice! E sapete cosa? L’esecuzione del codice è 10 volte più veloce con la notazione a oggetti rispetto a OB Get/OB SET …!

Esempi di notazione a oggetti

Supponiamo di avere un oggetto $o contenente le seguenti informazioni:

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

Per recuperare l’attributo “Firstname“, si scrive:

Con la notazione a oggetti

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

Senza notazione degli oggetti

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

Per recuperare l’attributo “Name” del secondo figlio, si scrive:

Con notazione dell’oggetto

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

Senza notazione dell’oggetto

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

Per aggiungere altri bambini, si scrive:

Con la notazione a oggetti

$o.Child[2].Name:="Mike"
$o .Child[2].Age:=9

Senza notazione dell’oggetto

ARRAY OBJECT($aChild;0)
C_OBJECT ($kid)
OB GET ARRAY ($o; "Bambino";$aChild)
OB SET ($kid; "Nome"; "Mike")
OB SET ($kid; "Età";9)
APPEND TO ARRAY ($aChild;$kid)
OB SET ARRAY ($o; "Bambino";$aChild)

Per saperne di più sulle collezioni >

Per aggiungere un’immagine in un attributo di oggetto, si scrive:

Con la notazione degli oggetti

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

Senza la notazione dell’oggetto

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

Per saperne di più su Immagini negli oggetti >

Per utilizzare la notazione a puntatore, si scrive:

Con la notazione a oggetti

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

Senza notazione degli oggetti

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

Come si abilita la notazione a oggetti?

Per poter usufruire della notazione degli oggetti, è necessario andare alla pagina Impostazioni di compatibilità nella finestra di dialogo Impostazioni database e fare clic sul pulsante “Attiva notazione oggetti”:

Ci sono alcuni prerequisiti prima di attivare la notazione degli oggetti, ma vi aiutiamo a prepararvi:

Preparatevi per la notazione degli oggetti >

Vanessa Talbot
- Product Owner - Vanessa Talbot è entrata a far parte del team di 4D Program nel giugno 2014. In qualità di Product Owner, è incaricata di scrivere le storie degli utenti e di tradurle in specifiche funzionali. Il suo ruolo è anche quello di assicurarsi che l'implementazione della funzionalità fornita soddisfi le esigenze del cliente. Ha lavorato sulla maggior parte delle nuove funzionalità di multi-threading preemptive e anche su un argomento molto complesso: la nuova architettura per le applicazioni con motore. Vanessa si è laureata presso Telecom Saint-Etienne. Ha iniziato la sua carriera presso il Criminal Research Institute come sviluppatrice per il dipartimento audiovisivo. Ha lavorato anche nei settori dei media e della medicina come esperta di supporto tecnico, produzione e documentazione di nuove funzionalità.