ClojureDocs

导航

命名空间

dotimes

clojure.core

从 1.0 开始可用 ()
  • (dotimes 绑定 & 正文)
bindings => name n
 Repeatedly executes body (presumably for side-effects) with name
bound to integers from 0 through n-1.
3 Examples
user=> (dotimes [n 5] (println "n is" n))
n is 0
n is 1
n is 2
n is 3
n is 4
nil
user=> (dotimes [n 10] 
         (println (map #(* % (inc n)) (range 1 11))))

(1 2 3 4 5 6 7 8 9 10)
(2 4 6 8 10 12 14 16 18 20)
(3 6 9 12 15 18 21 24 27 30)
(4 8 12 16 20 24 28 32 36 40)
(5 10 15 20 25 30 35 40 45 50)
(6 12 18 24 30 36 42 48 54 60)
(7 14 21 28 35 42 49 56 63 70)
(8 16 24 32 40 48 56 64 72 80)
(9 18 27 36 45 54 63 72 81 90)
(10 20 30 40 50 60 70 80 90 100)
nil
user=> (dotimes [x 8] (print x) 
           (dotimes [y x] (print (get (vec "Clojure") y))) 
         (newline))
0
1C
2Cl
3Clo
4Cloj
5Cloju
6Clojur
7Clojure
nil

;ranges with dotimes

(dotimes [y 5] 
  (println (map #(inc %) (range (inc  y)))))

(1)
(1 2)
(1 2 3)
(1 2 3 4)
(1 2 3 4 5)
nil

;factorials using ranges by dotimes

(dotimes [y 5] 
  (println "factorial" (inc y) " = " (apply * (map #(inc %) (range (inc  y))))))

factorial 1  =  1
factorial 2  =  2
factorial 3  =  6
factorial 4  =  24
factorial 5  =  120
nil
See Also

Returns a lazy (infinite!, or length n if supplied) sequence of xs.

Added by kumarshantanu

List comprehension. Takes a vector of one or more binding-form/collection-expr pairs, each follow...

Added by Omer

Repeatedly executes body (presumably for side-effects) with bindings and filtering as provided by ...

1 Note
    By , created 2.9 years ago

    dotimes always returns nil no matter what is returned by the body the last time through the loop.