Ett datorspråk innehåller funktioner , variabler och kontrollstrukturer . Perl funktion biblioteket innehåller " varje " funktion . En av dess kommandon kontrollstruktur kallas foreach . Det faktum att man är en funktion och den andra är en kontrollstruktur kommando innebär att det finns en grundläggande skillnad i hur de två åberopas , trots en liten likhet i deras användning . Parameter Struktur
" varje" funktion utför en uppgift varje gång det kallas , och den returnerar två värden . Funktionen har en hash-tabell som innehåller en etikett (som kallas en "nyckel" ) och ett värde. I en tabell med en lista som Namn: Julie , Ålder : 45 , Jobb: Sångare , returnerar " varje " funktion " Name " och " Julie " första gången det kallas . Så de uppgifter på vilka " varje " funktion verkar måste ha en struktur som inkluderar nyckel /värde par .
" Foreach " -kommandot är en looping konstruktion . Det fungerar på en array , vilket är en rak lista av element , utan nycklar . Ett exempel på en sådan grupp skulle vara Bob , Pete , Jane , gryning , i en array som heter "namn . "
Scope
Funktioner körs en gång varje gång de är heter . De lämnar oftast situationen på sina parametrar som de var när de kallades . " Varje " är annorlunda i detta avseende , eftersom det förskott pekaren indikerar det aktuella elementet i hash tabellen den får som en parameter . Detta innebär att varje gång funktionen anropas , kommer det tillbaka nästa par i listan . När den har nått slutet av listan , rapporterar den nästa tomma värden . Den tid efter det, rapporterar den det första elementet i tabellen. Den " foreach " konstruktion returnerar arrayen pekaren till sitt ursprungliga läge på det första elementet i arrayen . efterföljande anrop till " foreach , " om du använder samma array , börjar om från början igen .
Process
" foreach " konstruera arbetar genom elementen i en array tills den har bearbetat det sista elementet . Kommandot följs av parentes som innehåller alla instruktioner som ska utföras på varje element i arrayen . Liksom " varje " funktion , förskott den pekaren i arrayen till nästa element . Men " alla " måste kallas för varje element i tabellen , medan " foreach " loopar igenom varje element automatiskt tills den når slutet av arrayen .
Progression
" varje" -funktionen skapar inte en programstruktur . Det bygger på andra kommandon för att säkerställa att den åberopas tillräckligt många gånger för att bearbeta alla poster i en viss hash-tabell . Det måste ingå i de instruktioner som exekveras inom en slinga . Den " foreach " -kommandot är en av de konstruktioner som ger " varje " funktion med looping mekanismen saknar . Addera