אתה נמצא כאן יסודות השפה  »  בלוקי הצהרה  »  משני ביטויים

משני ביטויים

ישנה דרך לכתוב if עם פחות תוי ניקוד.

some_expression if control_exp;

ההצהרה כאן עומדת בפני עצמה וה control_exp הוא תג משנה של if. במקרה זה control_exp יחושב קודם עבור ערכו הבוליאני, בעזרת הכללים הרגילים של פרל, ואם הוא אמת, אזי some_expression יחושב מייד אחריו. צורה זו שוות ערך לקוד הבא:

if ( control_exp )
{
some_expression;
}

ההבדל הוא שלא צריך את התוים הנוספים. ההצהרה קוראת אחורה והביטוי חייב להיות ביטוי פשוט, לא בלוק של הצהרות. שיטה זו הופכת פעמים רבות לדרך הטבעית ביותר לציון בעיה.
הדוגמא הבאה מראה איך נצא מלולאה כאשר תנאי מסויים קורה:

LINE: while (<STDIN>)
{
last LINE if /^$/;
}

זוהי דרך קלה יותר לכתיבה.

להלן כמה קיצורים נוספים:

exp2 unless exp1;     # unless (exp1) {exp2;} זה כמו לכתוב
exp2 while exp1;    # while (exp1) {exp2;} זה כמו לכתוב
exp2 until exp1;     # until (exp1) {exp2;} זה כמו לכתוב

כל הדרכים הללו מחשבות את exp1 ובהתאם לתוצאה מבצעות או לא מבצעות את exp2.
הדוגמא הבאה מוצאת את המספר הכי קטן שחזקתו גדולה ממספר נתון:

chop ($n=<STDIN>);
$i=1; # ניחוש ראשוני
$i=$i*$i until $i > $n; # הלולאה תמשיך ותבוצע עד אשר נמצא מספר כזה

חסכנו כאן בכתיבת הקוד והרווחנו בהירות.
שימו לב:
צורות כתיבה אלה אינן רקורסיביות, לא ניתן לכתוב אותן מקוננות אחת בתוך השניה.









להוספת תגובה, אנא התחברו לדרכונט.