Zoeken…


Syntaxis

  • (do ({var | (var [init-form [step-form]])} *) (eind-test-formulier resultaat-formulier *) verklaring * {tag | statement} *)
  • (do * ({var | (var [init-form [step-form]])} *) (eind-test-formulier resultaat-formulier *) verklaring * {tag | statement} *)
  • (dolist (var list-form [result-form]) verklaring * {tag | statement} *)
  • (dotimes (var count-form [result-form]) verklaring * {tag | statement} *)

dotimes

dotimes is een macro voor gehele getallen iteratie over een enkele variabele van 0 onder een parameterwaarde. Een van de voorbeelden van eenvoud zou zijn:

CL-USER> (dotimes (i 5)
           (print i))

0 
1 
2 
3 
4 
NIL

Merk op dat NIL de geretourneerde waarde is, omdat we er zelf geen hebben opgegeven; de variabele begint bij 0 en wordt gedurende de lus waarden van 0 tot N-1. Na de lus wordt de variabele de N:

CL-USER> (dotimes (i 5 i))
5

CL-USER> (defun 0-to-n (n)
           (let ((list ()))
             (dotimes (i n (nreverse list))
               (push i list))))
0-TO-N
CL-USER> (0-to-n 5)
(0 1 2 3 4)

DOLIST

dolist is een lus-macro gemaakt om gemakkelijk door de lijsten te dolist . Een van de eenvoudigste toepassingen zou zijn:

CL-USER> (dolist (item '(a b c d))
           (print item))

A 
B 
C 
D 
NIL ; returned value is NIL

Aangezien we geen retourwaarde hebben NIL , wordt NIL geretourneerd (en A, B, C, D worden afgedrukt naar *standard-output* ).

dolist kan ook waarden retourneren:

;;This may not be the most readable summing function.
(defun sum-list (list)
  (let ((sum 0))
    (dolist (var list sum)
      (incf sum var))))

CL-USER> (sum-list (list 2 3 4))
9

Eenvoudige lus

De lusmacro heeft twee vormen: de "eenvoudige" vorm en de "uitgebreide" vorm. Het uitgebreide formulier wordt behandeld in een ander documentatieonderwerp, maar de eenvoudige lus is nuttig voor een zeer eenvoudige lus.

De eenvoudige lusvorm neemt een aantal vormen aan en herhaalt deze totdat de lus wordt verlaten met behulp van return of een andere uitgang (bijv. Gooien ).

(let ((x 0))
  (loop
     (print x)
     (incf x)
     (unless (< x 5)
       (return))))

0 
1 
2 
3 
4 
NIL


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow