DO ثغة متغير التفكير في بناء الجملة
سؤال
في بيتر سيبل في عملي اللثغة المشتركة م>، وقال انه يعطي هذا المثال:
(do ((nums nil) (i 1 (1+ i)))
((> i 10) (nreverse nums))
(push i nums))
وأستطيع أن أرى كيف يعمل، وذلك باستخدام NUMS داخل الحلقة ولكن لا يعطيها شكل خطوة. لماذا كنت وضعت NUMS في تعريف متغير بدلا من القيام بذلك:
(let (nums) (do ((i 1 (+ i 1)))
((> i 10) (nreverse nums))
(push i nums)))
وأنا متأكد من أن هناك سبب وجيه، ولكن أنا لا تحصل عليه حتى الان.
المحلول
ولأنها مريحة ويوفر المسافة البادئة. وعلاوة على ذلك، فإن تراكم ينتمي نظريا إلى الحلقة، فلماذا لا وضعها هناك؟
لا تنتمي إلى StackOverflow