בחלק זה של המדריך לפרל אנחנו הולכים לדבר על לולאת ה-for ב-Perl. יש המכנים אותה לולאת for בסגנון C,אך למעשה מבנה זה קיים בשפות תיכנות רבות.
לולאת for בפרל
מילת המפתח for בפרל יכולה לשמש בשני אופנים שונים. היא יכולה לפעול כמו לולאתforeachוהיא יכול לפעול כמו לולאה עם 3 פרמטרים כמו ב-C. היא נקראת לולאה בסגנון C, או C-style למרות שהיא קיימת בשפות תיכנות רבות.
אתאר כאן את השימוש הזה, למרות שאני מעדיף לכתוב לולאות foreach
כפי שהן מתוארות בחלק על מערכים בפרל.
ניתן להשתמש בשתי מילות המפתח for
ו כמילים נרדפות
פרל כבר תבין למה התכוונתם
ללולאה בסגנון C יש שלושה חלקים בפתיחת הלולאה. כללית זה נראה כך, אך ניתן להשמיט כל אחד מארבעת החלקים.
for (INITIALIZE; TEST; STEP) {
BODY;
}
למשל קטע הקוד הבא:
for (my $i=0; $i <= 9; $i++) {
print "$i\n";
}
החלק INITIALIZE יבוצע פעם אחת כשההרצה תגיע לאותה נקודה.
מייד לאחר מכן יבוצע החלק TEST. אם הוא false, אז מדלגים על כל הלולאה. אם החלק TEST הוא true אז הקוד ב-BODY ומייד אחריו מבוצע החלק STEP.
להבנת משמעותם של true ו-false, קיראו את ( ערכים בוליאנים בפרל.)
אז שוב מגיע ה-TEST וחוזר חלילה, כל זמן שה-TEST מחזיר ערך כלשהו שהוא true. כך שהלולאה נראית כך:
INITIALIZE
TEST
BODY
STEP
TEST
BODY
STEP
...
TEST
foreach
ניתן לכתוב את אותה לולאה שראינו - לולאה שהולכת מ-0 עד 9, כ- לולאת foreach ונראה לי שהמשמעות היא הרבה יותר ברורה:
foreach my $i (0..9) {
print "$i\n";
}
כפי שכתבתי, הן בעצם מילות מפתח נרדפות, ולכן יש מתכנתים שכותבים for
אבל את הלולאה הם כותבים בסגנן של לולאת foreach כמו כאן:
for my $i (0..9) {
print "$i\n";
}
החלקים בלולאת for בפרל
INITIALIZE משמש כמובן לאיתחול משתנים. חלק זה מבוצע בדיוק פעם אחת.
TEST הוא ביטוי בולאני כלשהו שבודק אם הלולאה צריכה להמשיך או להפסיק. חלק זה מבוצע לפחות פעם אחת. TEST מבוצע פעם אחת יותר מ-BODY או מ- STEP .
BODY הוא אוסף שורות קוד, לרוב זה הפעולה שאנחנו רוצים לעשות מספר פעמים. קיימים גם מקרים ש-BODY ריק עשוי להיות הגיוני. כנראה שניתן לשתב את כל האפשרויות האלו בצורה יפה יותר.
STEP הוא אוסף פעולות נוסף שמשמש להגדיל או להקטין אינדקס כלשהו. ניתן להשאיר גם את החלק הזה ריק, למשל במקרה שעושים את השינויים הנחוצים כחלק מה-BODY.
לולאה אינסופית
ניתן לכתוב לולאה אינסופית באמצעות לולאת for :
for (;;) {
# do something
}
לולאות כאלו נכתבות לרוב כלולאות while
, לדוגמה:
while (1) {
# do something
}
לולאות אילו מתוארות במדריך בחלק לולאות while בפרל.
perldoc
תוכלו למצוא את התיאור הרשמי של לולאת for בתיעוד של פרל כאן: Perl documentation.