質問

Peter Seibelの Practical Common Lisp で、彼はこの例を挙げています:

(do ((nums nil) (i 1 (1+ i)))
    ((> i 10) (nreverse nums))
  (push i nums))

ループ内でnumsを使用するが、ステップ形式を与えずに、どのように機能するかを見ることができます。これを行うのではなく、変数定義にnumを入れるのはなぜですか:

(let (nums) (do ((i 1 (+ i 1)))
         ((> i 10) (nreverse nums))
       (push i nums)))

正当な理由があると確信していますが、まだわかりません。

役に立ちましたか?

解決

便利でインデントを節約できるため。さらに、アキュムレータは概念的にループに属しているので、なぜそこに配置しないのですか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top