Szukaj…


Składnia

  • (do ({var | (var [init-form [step-form]])} *) (end-test-formula-wynik-formularz *) deklaracja * {tag | instrukcja} *)
  • (do * ({var | (var [init-form [step-form]])} *) (end-test-form wynik-formularz *) deklaracja * {tag | instrukcja} *)
  • (dolist (var list-form [wynik-formularz]) deklaracja * {tag | instrukcja} *)
  • (dotimes (var count-form [wynik-formularz]) deklaracja * {tag | instrukcja} *)

dotimes

dotimes to makro do iteracji liczb całkowitych na pojedynczej zmiennej od 0 poniżej pewnej wartości parametru. Jednym z przykładów może być:

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

0 
1 
2 
3 
4 
NIL

Zauważ, że NIL jest wartością zwracaną, ponieważ sami jej nie podaliśmy; zmienna zaczyna się od 0 i w całej pętli staje się wartością od 0 do N-1. Po pętli zmienna staje się 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)

zrobić listę

dolist to zapętlone makro utworzone w celu łatwego przeglądania list. Jednym z najprostszych zastosowań byłoby:

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

A 
B 
C 
D 
NIL ; returned value is NIL

Zauważ, że ponieważ nie podaliśmy wartości zwracanej, zwracany jest NIL (a A, B, C, D są drukowane na *standard-output* ).

dolist może również zwracać wartości:

;;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

Prosta pętla

Makro pętli ma dwie formy: formę „prostą” i formę „rozszerzoną”. Rozszerzona forma jest omówiona w innym temacie dokumentacji, ale prosta pętla jest przydatna w bardzo podstawowej pętli.

Prosta forma pętli przyjmuje wiele form i powtarza je, dopóki pętla nie zostanie zakończona przy użyciu return lub innego wyjścia (np. Rzut ).

(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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow