Common Lisp – הבדלי גרסאות
תוכן שנמחק תוכן שנוסף
אין תקציר עריכה |
יצירת משתנים |
||
שורה 97:
(list 75 21 43 'hello 'world 98)
</syntaxhighlight>
=== יצירת משתנים ===
ניתן ליצור משתנים ב-Common Lisp ב-3 דרכים:
# דרך זו היא מיושנת יותר והייתה בשימוש רב יותר בגרסאות ישנות יותר של Lisp. ניצור משתנה באמצעות ה[[מאקרו (תכנות)|מאקרו]] <code>set</code> . לדוגמה: <code>(set (quote *foo*) 42)</code> . בדוגמה זו יצרנו משתנה בשם <code>*foo*</code> שערכו 42. השתמשנו בהוראה quote על מנת ששם המשתנה, במקרה זה <code>*foo*</code>, יחשב ל-symbol ולא יפושט. ניתן לכתוב גרש ( ׳ ) לפני הביטוי על מנת לקבל את אותה התוצאה ( ניתן לבצע זאת ב-Common Lisp גם ללא קשר להגדרת משתנים ). שם המשתנה מתחיל ונגמר בכוכבית ככחלק ממוסכמת כתיבה בשפה, ואין חובה לבצע זאת גם.
# באמצעות המאקרו <code>setq</code> ( קיצור של set quote ), לדוגמה: <code>(setq *foo* 42)</code>. גם בדוגמה זו, יצרנו משתנה בשם *foo* שערכו 42.
# באמצעות המאקרו setf . שיטה זו נחשבת לחדשנית יותר, משום שבנוסף ליכולותיהן של השיטות הקודמות. באמצעות setf ניתן לגשת ולשנות איברים ברשימה, לעומת set ו setq.
להלן השוואה בין הקוד הנדרש יצירת רשימה זהה בשיטות השונות:<syntaxhighlight lang="common-lisp">
(set (quote foo) (list 1 2 3)) ;foo => (1 2 3)
(1 2 3)
(set 'foo '(1 2 3)) ;foo => (1 2 3) same function, simpler expression
(1 2 3)
(setq foo '(1 2 3)) ;foo => (1 2 3) similar function, different syntax
(1 2 3)
(setf foo '(1 2 3)) ;foo => (1 2 3) more capable function
(1 2 3)
</syntaxhighlight>
=== פעולות ===
|