4D v16 R4 introduce un nuovo tipo di variabile chiamata Collection. A cosa servono queste variabili? Come gli oggetti o i BLOB, le collezioni possono essere utilizzate per contenere quasi tutti i tipi di variabili, come testi, numeri, booleani, oggetti e persino altre collezioni. La cosa positiva è che tutti questi tipi di variabili precedentemente menzionati possono essere mescolati all’interno della stessa collezione, mentre gli array devono sempre contenere lo stesso tipo di elementi!
Cosa c’è di nuovo?
Sono stati creati due nuovi comandi (C_COLLECTION e New collection). È possibile accedere e modificare il contenuto delle raccolte utilizzando la notazione degli oggetti. Le collezioni possono essere paragonate agli array, ma sono molto più versatili perché non sono limitate a un solo tipo di dati.
Le collezioni possono essere stringate e le stringhe possono essere analizzate per creare collezioni. Per farlo, basta usare i comandi JSON Stringify e JSON Parse. Se siete abituati a manipolare array JSON, scoprirete che le collezioni sono molto simili. Se non lo siete, vi abituerete in breve tempo.
Si notano due differenze principali:
1. Per accedere agli elementi di una collezione si devono usare le parentesi quadre [ ] e non le parentesi graffe { }.
2. Gli elementi di una collezione iniziano con l’indice 0. Quindi si può accedere al primo elemento scrivendo collection[0], il che è diverso dagli array il cui primo elemento è 1.
Da un lato, gli array (i cui elementi sono tutti dello stesso tipo) consentono di ottimizzare la memoria, quindi sono veloci ed efficienti. Dall’altro lato, le collezioni offrono un’elevata flessibilità. Quindi, se la memoria o la velocità sono importanti, usate gli array. Se volete semplificare il codice, usate le collezioni. Ora avete una scelta.
Inoltre, nella maggior parte dei casi, le collezioni possono essere utilizzate come gli altri tipi di variabili in 4D! Possono essere inviate come parametri ai metodi, ricevute come ritorno di funzioni, dichiarate come locali o globali, ecc.
Esempi di database
Ecco una serie di piccoli esempi di come le collezioni possono essere dichiarate e utilizzate:
C_COLLECTION col3(myCollection)
col1 := New collection(12;14; "zoulou";45)
col2 := New collection(50; "bravo";col1;Current date)
:= New collection(col1;col2)
$obj:=New Object("val"; "Echo")
col := New collection(12; "alpha";$obj;True)
vNum :=col[0] // Access first element of the collection
vString :=col[1]
obj :=col[2]
bool :=col[3]
$n:=col.lunghezza // This is the way to know the number of items of a collection!
vString :="L'insieme contiene "+String($n)+" elementi"