4D iniciuje nový typ proměnné: .

Automaticky přeloženo z Deepl

4D v16 R4 zavádí nový typ proměnné s názvem Collection. K čemu jsou tyto proměnné určeny? Stejně jako objekty nebo BLOBy mohou být kolekce použity k uložení téměř všech typů proměnných, jako jsou texty, čísla, booleany, objekty a dokonce i jiné kolekce. Dobré je, že všechny tyto dříve zmíněné typy proměnných lze uvnitř jedné kolekce míchat, přičemž pole musí vždy obsahovat stejný typ prvků!

Co je nového?

Byly vytvořeny dva nové příkazy (C_COLLECTION a New collection). K obsahu kolekcí lze přistupovat a upravovat je pomocí objektového zápisu. Kolekce lze přirovnat k polím, ale jsou mnohem univerzálnější, protože nejsou omezeny pouze na jeden typ dat.

Kolekce lze řetězit a řetězce lze analyzovat a vytvářet z nich kolekce. K tomu stačí použít existující příkazy JSON Stringify a JSON Parse. Pokud jste zvyklí manipulovat s poli JSON, zjistíte, že kolekce jsou velmi podobné. Pokud ne, zvyknete si na ně ve velmi krátké době.

Je třeba si všimnout dvou hlavních rozdílů:

1. Pro přístup k položkám kolekce musíte používat hranaté závorky [ ], a NE kudrnaté závorky { }.

2. Prvky kolekce začínají na indexu 0. K prvnímu prvku tedy přistupujete zápisem collection[0], což je rozdíl oproti polím, jejichž první prvek je 1.

Na jedné straně pole (jejichž prvky jsou všechny stejného typu) umožňují optimalizaci paměti, takže jsou rychlá a efektivní. Na druhé straně kolekce poskytují vysokou flexibilitu. Pokud tedy záleží na paměti nebo rychlosti, použijte pole. Pokud chcete kódovat jednodušeji, použijte kolekce. Nyní máte na výběr.

Kromě toho lze kolekce ve většině případů používat stejně jako jiné typy proměnných ve 4D! Lze je posílat jako parametry metodám, přijímat jako návraty funkcí, deklarovat jako lokální nebo globální atd.

Příklad databáze

Příklady

Zde je sada malých příkladů, jak lze kolekce deklarovat a používat:

C_COLLECTION(myCollection)
col1 := New collection(12;14; "zoulou";45)
col2 := New collection(50; "bravo";col1;Current date)
col3 := 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.length // This is the way to know the number of items of a collection!
vString :="Kolekce obsahuje "+String($n)+" položky".

Roland Lannuzel
- Product Owner & 4D Expert - Po studiu elektroniky se Roland věnoval průmyslovým IT jako vývojář a konzultant, který vytvářel řešení pro zákazníky s různými databázemi a technologiemi. Koncem 80. let se zamiloval do 4D a používal jej při psaní podnikových aplikací, které zahrnovaly účetní, fakturační a e-mailové systémy. nakonec se připojil ke společnosti v roce 1997 a Rolandův cenný přínos zahrnuje návrh specifikací, testovacích nástrojů, demoverzí a také školení a přednášky pro komunitu 4D na mnoha konferencích. Nadále aktivně utváří budoucnost 4D definováním nových funkcí a nástrojů pro vývoj databází.