Arrays/cs
From Original War Support Wiki
Tutorials/cs -> Arrays/cs
Úvod
Pole, nebo také seznam, je kolekce hodnot (libovolného typu). Každá hodnota je oddělena čárkou. Seznam začíná [ a končí ].
Pozice specifického prvku v seznamu se nazývá index. Např. v seznamu: [5, 7, 4, 2] má hodnota (prvek) "7" index "2".
Příklad práce s poly
1) Použití jediné hodnoty z pole:
list := [2, 3, 4]; jeden_prvek := list [3]; // jeden_prvek bude mít hodnotu 4, protože třetí [3] prvek v seznamu list je 4
2) Spojení více polí do jednoho:
pole1 := [2, 3, 4]; pole2 := [3, 4, 5]; spojenePole := pole1 ^ pole2;
spojenePole bude obsahovat: [2, 3, 4, 3, 4, 5]
Nicméně někdy potřebujeme jiné výsledky, obvykle při práci s jednotkami. Tehdy nám stačí ve výsledném seznamu ne více než jedna jednotka. Právě tehdy můžeme ocenit operátor union:
spojenePOle := [John, Bobby, Joan] union [John, Joan, Cyrus, Radzio];
JointArray bude opsahovat: [John, Bobby, Joan, Cyrus, Radzio]
Union vyloučí všechny opakující se hodnoty v seznamu, poté vyloučí z pravého seznamu ty, které se již nacházejí v levém, a nakonec spojí oba seznamy do jednoho.
Může být také použit k odstranění všech opakujících se hodnot ze seznamu:
spojenePole := [1, 2, 1, 1, 2, 3] union [];
JointArray bude obsahovat: [1, 2, 3]
3) Vyloučení hodnoty nebo celého pole z jiného pole:
mojePole := [1, 2, 3, 4, 5] diff [1, 4]; mojePole := mojePole diff 5;
mojePole bude obsahovat: [2, 3]
Poznámka: diff odstraní všechny opakující se hodnoty (stejně jako union - viz výše) a může být použito stejně jako union na jednom seznamu pro dosažení stejného výsledku
4) Práce s každým jednotlivým prvkem v poli:
var a, mojePole; // nějaký kód mojePole := [John, Joan, Bobby]; for a in mojePole do begin if (not IsDead(a)) then KillUnit(a); end;
A každý, kdo zatím byl v seznamu živý, právě zemřel.
Pole, matematika a porovnání
Jestliže použijeme pole v matematickém výrazu:
[1, 3] * [9, 3, 7] + [11]
je s ním zacházeno jako s číslem stejným, jako velikost pole; t.j. kolik prvků obsahuje. Takže výsledek výše uvedeného výrazu je 2 * 3 + 1 = 7
To stejné se stane, pokud porovnáme pole s čílem: [1, 5, 3, 4, 0] = 5 je pravdivý.
Nicméně, jestliže porovnáte spolu dva pole, budou brána za sobě rovná právě tehdy, pokud jsou stejně velká a na stejných pozicích obsahuje stejné hodnoty:
pravda: [1, 2, 3, 4] = [1, 2, 3, 4] nepravda: [1, 2, 3, 4] = [1, 2, 3, 4, 4] [1, 2, 3, 4] = [2, 1, 4, 3]