site map who made it ?
 

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

התכנית הבאה מדגימה את השימוש ב-eval :

"set foo "set a 22
eval $foo
puts $a

 22<=

לאחר שהושמה למשתנה foo הפקודה, eval גורמת למתרגם של השפה לשערך את הביטוי שבמשתנה foo. המעבר הראשון על הביטוי גורם ל-foo היות מוחלף בערכו ("set a 22"), ואחרי מעבר זה מתבצעת הערכה של הביטוי "eval set a 22". הערכה של ביטוי זה גורמת ליצירת המשתנה a ולהשמה של הערך 22 לתוכו.

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

הסינטקס של הפקודה catch :
catch script ?varName

הפקודה גורמת להרצת ה-script ומחזירה מחרוזת דצימלית שמייצגת את הקוד שהוחזר על-יד הרצת ה-script. ערכו יהיה 0 (TCL_OK) אם לא היו שגיאות בהרצת ה-script. אחרת הערך המוחזר יהיה בהתאם לקודי השגיאה המוגדרים בשפה (tcl.h). אם ניתן שם המשתנה varName ערכו בתום הרצת התכנית יהיה הערך המוחזר על-ידי ה-script (ערך שגיאה או ערך מוחזר אחר).

התכנית הבאה מדגימה את השימוש ב-catch :

[ { ["set retval [catch {set f [open "nosuchfile" "r

} {if {$retval == 1
  "puts "An error occured
{

 (כאשר אין קובץ באותו שם בספריה הנוכחית )<=

הפקודה שמועברת כארגומנט ל-catch מנסה לפתוח את הקובץ "nosuchfile" בספריה הנוכחית. בהנחה שקובץ בשם זה לא קיים בספריה, יוחזר ערך שגיאה (ערך 1). מאחר וכל זה מתבצע במסגרת פקודת catch, מנגנון הטיפול הסטנדרטי בשגיאות לא מופעל ו-catch מחזירה את הערך 1. ערך זה מושם לתוך המשתנה retval שנבדק על-ידי ה-if.

 

 
< המדריך
שונות

 

לעמוד הבא
למעלה
לעמוד הקודם