Perl tömbök

Egy sor nyelv Perl - egy változót, amely értékek listája. A változó neve a tömb megkezdi a @ szimbólumot. És ez elég logikus - a @ jelet alapul a betűt, ezzel a betűvel kezdődik, a szó tömb - a tömbben.







Egy tömb Perl tárolhat értékek listája minden formáját. Ez lehet egy tömb, amiben tárolja az időben, és a vonal, és a számot, és semmi mást.

Meghatározása tömb és hozzáférést elemek

Itt egy egyszerű példaprogram azonosítani, és a tömb elemeinek Perl:

Ha ezt a forgatókönyvet, akkor jelenik meg:

Mi folyik itt. Először is, a normál vonal megkezdjük az összes Perl script #! / Usr / bin / perl, akkor van egy kapcsolat (használat) több jellemzője nyelven teszik dolgozó Perl sokkal kényelmesebb. Majd hozzon létre egy változót @names és hozzá van rendelve egy listát az 5 vonalak.

Mint sok a Perl programozási nyelvek, az első elem a tömb számozott 0. művelet a változó @names a következő:

  • Ez a változó a 0 tárolt karakterlánc „Homer”
  • vonal alatt tároljuk az 1. számú „Marge”
  • 2 - 'Bart'
  • 3 - A 'Lisa'
  • 4 - 'Maggy'

Annak érdekében, hogy ki a változó @name cikkszám 2 használ egy teljesen idióta formában - $ name [2]. Itt szuper illogikus, hogy a @ jel helyett a $ jelet A hivatalos magyarázat erre butaság - azt akarjuk, hogy hozzáférést biztosít az azonos elem, és egy változó egyik eleme karakterrel kezdődik $, de ez csak egy hiba a design a nyelvet. Perl 6-os verzió van rögzítve. De Perl 5-ös verzió van meg együtt élni vele.

Azt mondja - megjeleníti a tény, hogy a tömb a szám 0. 0 számot a tömb „Homer” sor - és ez jelenik meg a képernyőn.

Definiálása tömbök. Kiegészítés.

Csak, hogy mi határozza meg a tömb segítségével ezt a kódot:

Amikor sok a tömb elemeinek, ez sokkal kényelmesebb, hogy írjon nekik egy oszlopban:

A Perl nyelv nincs JSON problémák - Perl hagyjuk meg egy vessző után az utolsó elem:

(Sőt, ha listát a tömb elemei egy oszlopban, mindig adja meg a vessző után az utolsó elem - ez megkönnyíti a munkát az kód könnyebben olvasható és diff).

Ha a tömb néhány sornyi szöveget, hogy ne tartalmazzon szóközt, akkor van egy egyszerűbb módja annak, hogy meghatározza egy tömb - használat üzemeltető QW:

QW üzemeltető csökkenti a szövegét át neki a szóköz, és hozzon létre egy lista elem.

Ha azt szeretnénk, hogy hozzon létre egy tömböt számok listáját, amelyek egy sorban, akkor az üzemeltető.

Ez ugyanaz, mint:

Operator. is működik a betűt:

Ez a funkció a nyelv is használható egy egyszerű perl egysoros, generáló jelszavakat:

következtetés tömbök

Néha a fejlesztés során meg kell látni, mi van benne a tömbben. Használhatja a Data :: Dumper könyvtár:

Itt a kimenő e szkript:

Ha Perl, akkor meg Adat :: Dumper könyvtárban. De ha tesz további adatok :: Nyomtató könyvtár, meg kell írni kevesebb betű tartalmának megjelenítéséhez a tömb:

És a forgatókönyv sokkal kellemesebb következtetés:

Perl tömbök

A hossza a tömb

Feladat. Van egy sor @names tudniuk kell, hogy a mérete -, hogy mennyi ez elemekkel. Számos módja van erre. Akkor egy speciális változót, amely az index az utolsó elem, vagy használhatja a funkció Perl úgynevezett „kontextus”.

Ha van egy tömb, amely automatikusan van egy speciális változó, amely jelzi az index az utolsó elem. Van egy tömb @names amely 5 elem, és van egy változó $ # neve van, amely a 4-es számú (mert az elemek számozása 0 nem 1). Ha az elemek száma a tömbben változik, automatikusan megváltozik és a $ # neveket.

Az első módja, hogy a számát a tömb elemeinek - az, hogy a $ # nevek és adjunk hozzá egy:







Ez a módszer tökéletesen működik érvényes, de egy jobb út - az, hogy a „kontextus”:

Mi folyik itt? Eleinte minden ugyanaz, mint az előző forgatókönyvet, de aztán végre:

Hozunk létre egy új változót $ number elején a neve ennek a változó a $ jelet - ez azt jelenti, hogy a változó típusát - skalár. A $ egészen logikus - ez a szimbólum hasonlít a levelet s kezdődik a szó skalár. Skalár vagy skalár változó - egy változót, amely csak az egyik értéket. Ez lehet egy string, szám vagy bármi más.

És van egy olyan környezetben van. Context - ez egy nagyon fontos dolog a Perl programozási nyelv. A Perl nyelv, a szövegkörnyezettől függően (vagyis az a tény, hogy egy szám) különböző dolgokat különböző módon. Kontextus - egy nehéz dolog. De ahhoz, hogy programozni Perl meg kell érteni ka munka keretében.

A kifejezés my $ number = @names; Ez azt jelenti, hogy van egy tömb és használják azt a „skalár kontextus”. Az összefüggésben a skalár tömb - az elemek száma ott, azaz Pontosan mit is akarunk.

Itt egy másik példa a használati kontextus. Használhatja egy tömböt egy listát az összefüggésben:

A művelet következtében - a skalár változó $ ember vonal „Homer”, és a skalár változó $ nő az akarat „Marge” sort.

A script, először rendeljen hozzá egy tömböt egy skalár változó, és ezután kiadja a változó értékét:

És mi történik, ha csak megjeleníti az érték a tömb @names?

Ez a következtetés erősen eltér az 5-ös szám a magyarázat - kontextusban. Kulcsszó mondjuk dolgozik egy listát kontextusban. mondjuk megjeleníti az összes elem a listában amit átadott. De akkor kifejezetten jelzi, hogy akarunk működni egy sor olyan skalár összefüggésben:

Ebben az esetben a kimenet 5.

Munka tömbök

Hozzáadása egy elemet, hogy a végén a tömb:

Az eredmény ez a művelet - a tömb @arr lista (1, 2, 3, 'ABC');

C adhatunk a tömb a push több elemből:

Az eredmény ez a művelet - a tömb @arr lista (1, 2, 3, 'abc', 'def');

Egy érdekes tulajdonsága a push, melyről kevesen tudják - ez a funkció nem csak megváltoztatni a tömb, hanem visszatér a szám -, hogy hány elem a tömbben volt hozzáadása után egy sor mindezen elemeket. Tehát a feladat „hogy megtalálják a számát a tömb elemeinek” meg lehet oldani, mint a szuper perverz módon:

Push funkció hozzáad egy elemet (vagy elemek) a végén a tömb. Perl függvény az inverz művelet -, hogy ki az utolsó elem a tömbben. Ez úgy történik, hogy a pop (segítségével ezt a funkciót, akkor nem kap több elem, ez a funkció kivesz csak egy eleme).

Miután a fenti kódot @arr tömb két elemből állnak (1, 2), és a változó $ SMTH száma 3 tároljuk.

A push / pop funkciók működni egy sor, mint egy verem.

Eltekintve a funkciók nyomni / pop, amelyet hozzáadnak / eltávolított elem a végén a tömb még egy műszak / unshift funkciók működnek az elején a tömb.

Adjunk hozzá egy elemet, hogy az elején a tömböt:

Miután végrehajtottuk a parancsokat a tömb lesz található @arr lista ( „abc”, 1, 2, 3)

A unshift adhat több elemet a tömb elején:

Miután végrehajtottuk a parancsokat a tömb lesz található @arr lista ( 'abc', 'def', 1, 2, 3)

Csakúgy, mint a push, unshift visszaadott szám - az elemek száma a tömbben hozzáadása után az összes elemet.

Ellenőrzik az első eleme a tömb segítségével a shift funkció:

E lépések elvégzése után, a tömb állna két elem (2, 3), és a változó $ elem korábbi első eleme - az 1-es szám.

  • unshift hozzáadja az elem / elemei a tömb
  • húz elmozdulás elem elejétől a tömb
  • nyomja hozzáadja az elem / elemeit a tömb a végéig
  • pop elem húzza a végén a tömb

Perl tömbök

Végiglépdelni a tömb

Gyakran a probléma - meg kell végigmenni minden eleme egy tömb, és hajtsa végre a velük bizonyos intézkedéseket.

A Perl, mint sok más programozási nyelvek, van egy ciklus. Itt van, hogy menjen végig a tömb elemeit egy használ erre:

Itt a kimenő e program:

Itt minden szabványos és egyszerű. Azonosított $ i = 0, hogy ellenőrizze, hogy a feltétel teljesül, teljesül a hurok teste, növeljük a számlálót, ellenőrizte, hogy a feltétel teljesül, teljesül a hurok teste, a számláló nőtt.

De Perl egy egyszerű és kényelmes módja végighaladni a tömböt:

Perl egy érdekes funkció - változó alapértelmezés szerint. Ha jól jelzik a változó foreach, akkor perl hozza az egész tömb elemei az alapértelmezett változó $ _:

És ha azt nem adja meg a paramétereket, akkor azt mondják fog működni alapértelmezés szerint változó. Szóval lehet írni ugyanazt a ciklust az alábbiak szerint:

És Perl, akkor a postfix jelölése foreach, így ez ugyanaz a ciklus felírható:

Perl egy while ciklus, és azt is lehet használni, hogy végighaladni a tömbben. Mint például a (pontosan, az ilyen használat rejlik veszélyt):

Pontosabban, ebben a példában ugyanúgy működik, mint a többi lehetőség ebben a szakaszban. De ha van undef a tömb elemeinek, akkor ebben a ciklusban nem fog működni minden eleme:

A kimenő e szkript:

Ie nélkül 'Maggie'. Ön tudja alakítani egy while ciklus, hogy működik megfelelően, például:

(Variable $ # nevek visszatér -1 esetén egy üres tömböt).

De egyszerűbb és könnyebb lenne írni a foreach:

A tömbök Perl használják írásban a saját funkciója van:

Itt határozza meg a függvény neve say_hello. Ha hívjuk, a belső funkciók az összes paramétert adtunk meg esik egy speciális tömb @_.

A felvétel

megtartottuk az első eleme a tömb @_ változó $ name.

@_ - egy tömb, így velük együtt dolgozni másképp. Mint ez:

Ha a Shift belül a sub, és nem adja meg a paramétereket, ez működni fog @_. Annak érdekében, hogy ez utóbbi lehet írni:




Kapcsolódó cikkek