Kurzusok
/
Perl
Perl
/
Tanterv
/
Tömbök és listák
Tö

Tömbök és listák ebben a kurzusban: Perl

1 feladat

A(z) Tömbök és listák fogalomról

A tömbök és a listák skalárokból álló rendezett gyűjtemények. Ha nem használunk referenciákat (amelyekről egy külön fogalomban lesz szó), ez azt jelenti, hogy a tömbök és a listák mindig laposak, azaz nem tartalmazhatnak más tömböket vagy listákat.

A legtöbb esetben a listákat zárójelek () veszik körül, az elemeiket pedig vesszők , választják el.

Egy tömbváltozót általában úgy töltünk fel, hogy értékül adunk neki egy listát, például: my @names = ('Alice', 'Bob', 'Charlie');.

Egy tömb vagy lista elemeihez indexek megadásával, azaz alsó indexszel férhetsz hozzá, például: ('Alice', 'Bob', 'Charlie')[1] # 'Bob'.

A Perlben az indexek 0-tól kezdődnek. A negatív indexek a tömb vagy lista végétől számolódnak, például: ('Alice', 'Bob', 'Charlie')[-1] # 'Charlie'.

Függvények

Sok függvényt implementáltak a tömbök és a listák kezelésére; ezek közül a leghasznosabbak közé tartozik a grep, amely egy feltételnek megfelelő elemekből álló új, szűrt listát ad, a map, amely az elemeket egy új értéklistává alakítja, és a sort, amely az elemeket átrendezett új listában adja vissza.

A tömbök módosítására szolgáló függvények közé tartozik a push, amely a tömb végére fűz elemeket, a pop, amely eltávolítja az utolsó elemet, a shift, amely eltávolítja az első elemet, az unshift, amely a tömb elejére szúr be elemeket, és a splice az összetettebb módosításokhoz.

A tömbök és listák bejárása egy for(each) utasítással szintén gyakran fog előkerülni.

A sigilek eltérései

Amikor egy tömb elemeihez férsz hozzá, az adott sigil határozza meg az eredményt. A változónév végén álló [] alsó index az, ami megmondja Perlnek, hogy az adott nevű tömböt éred el.

my @names = ('Alice', 'Bob', 'Charlie');

$names[0]; # 'Alice'      <- A scalar
@names[0]; # ('Alice')    <- A slice (with only one index, this probably isn't what you want. There will be a warning.)
%names[0]; # (0, 'Alice') <- A key/index + value slice

$names[1, 2]; # 'Charlie'                <- A scalar (via unsupported syntax for an ancient feature. Probably not what you want. There will be a warning.)
@names[1, 2]; # ('Bob', 'Charlie')       <- A slice
%names[1, 2]; # (1, 'Bob', 2, 'Charlie') <- A key/index + value slice

Bár megengedett, az olvashatóság érdekében érdemes elkerülni, hogy a különböző változótípusok ugyanazt a nevet használják.

Tömbök és listák

A tömbök és a listák sok hasonlóságot mutatnak, és sok helyen felcserélhetően használhatók, de nem ugyanaz a két dolog. A lista skalárok rögzített és megváltoztathatatlan gyűjteménye. A tömb skalárok változó gyűjteménye, amelynek a tartalma és maga a mérete is megváltoztatható.

Bizonyos kontextusokban eltérően viselkednek. A skalár kontextusban használt tömb a tömb méretét adja vissza. A skalár kontextusban használt lista a lista utolsó elemét adja vissza, és esetleg figyelmeztetéseket kapsz arról, hogy a többi tartalma void kontextusban használódik.

my @names = ('Alice', 'Bob', 'Charlie');

scalar @names; # 3
scalar ('Alice', 'Bob', 'Charlie'); # 'Charlie' (and some warnings).

További részleteket a következő GYIK-ben találsz: Mi a különbség a lista és a tömb között?

Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg

Tanuld meg a(z) Tömbök és listák fogalmat

A gyakorlás zárolva

Oldj fel még 10 feladatot, hogy gyakorolhasd a(z) Tömbök és listák fogalmat