שימוש במערכים אסוציאטיביים

Fish Shell:
שימוש במערכים אסוציאטיביים

איך ל:

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

ראשית, התקנת אלמנטים של “מערך אסוציאטיבי” בנפרד:

set food_color_apple "red"
set food_color_banana "yellow"

לגישה לאלמנט, פשוט התייחס אליו ישירות:

echo $food_color_apple
# פלט: red

אם יש צורך לשלוף אותם בלולאה, השתמש בלולאת for תוך שימוש בקונבנציה של שמות:

for food in apple banana
    echo $food_color_$food
end
# פלט:
# red
# yellow

למי שחסר Bash בלתי ${!array[@]} לקבלת כל המפתחות, ניתן לאחסן מפתחות ברשימה נפרדת:

set food_keys apple banana

for key in $food_keys
    echo $key 'הוא' $food_color_$key
end
# פלט:
# apple הוא red
# banana הוא yellow

צלילה עמוקה

מערכי אסוציאציה אמיתיים כפי שקיימים בשפות תסריט אחרות עדיין אינם חלק מהגישה של Fish. הפתרון המוצע מנצל את יכולות המניפולציה של מחרוזות והרשימות של Fish על מנת ליצור מבנה דמוי מערך אסוציאטיבי. אף על פי שזה עובד, זה לא נקי או חסין לשגיאות כמו שתמיכה מובנית במערכי אסוציאציה הייתה נראית. מעטפות שלל כמו Bash ו-Zsh כוללות תמיכה מובנית במערכי אסוציאציה, מה שמוביל לקוד יותר ישיר וקריא. עם זאת, פילוסופיית העיצוב של Fish שואפת לפשטות וידידותיות למשתמש, אולי על חשבון תכונות כאלה. הפתרון מספק מענה לרוב הצרכים אך חשוב להמשיך ולעקוב אחרי התפתחות Shell של Fish - המפתחים שלו משפרים ומוסיפים תכונות באופן פעיל על סמך משוב מהקהילה.