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

משתנים מקומיים בפונקציה

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

sub sum {
local($sum); # למשתנה מקומי $sum הופך את
$sum=$_[0]+$_[1];
$sum; #הערך המוחזר
}

כשגוף הפונקציה מבוצע לראשונה, כל ערך גלובלי של המשתנה sum$ נשמר, ומשתנה חדש בשם sum$ נוצר עם הערך undef .
בסיום הסאברוטינה, פרל משליכה את המשתנה הלוקלי, ועושה restore לערכו הקודם, הגלובלי שנשמר. זה עובד אפילו אם המשתנה sum$ הוא כרגע משתנה מקומי מסאברוטינה אחרת ( סאברוטינה שקוראת לסאברוטינה זו, או כזו שקוראת לסאברוטינה שקוארת לנוכחית וכן הלאה...).
משתנים יכולים להיות שייכים לקינון של הרבה גרסאות מקומיות , למרות שניתן לגשת רק לגרסא אחת כל פעם.



להוספת תגובה, אנא התחברו לדרכונט.
משתנים פרטיים 04-12-03 07:01
 חגי
#2

כדי ליצור משתנה פרטי בפונקציה מומלץ להשתמש בmy ולא בlocal...
מבחינת מהירות ובטיחות, my הרבה יותר עדיף.
רק אם באמת רוצים לעשות dynamic scoping משתמשים בlocal