سؤال

في بيتر سيبل في عملي اللثغة المشتركة ، وقال انه يعطي هذا المثال:

(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)))

وأنا متأكد من أن هناك سبب وجيه، ولكن أنا لا تحصل عليه حتى الان.

هل كانت مفيدة؟

المحلول

ولأنها مريحة ويوفر المسافة البادئة. وعلاوة على ذلك، فإن تراكم ينتمي نظريا إلى الحلقة، فلماذا لا وضعها هناك؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top