loops
클로저에서 반복문 덩어리들을 죄다 살펴보자. tutorial point에는 4가지 반복문이 소개되고 있다. while doseq dotimes loopwhile
(while(expression) (do codeblock))while문의 expression이 true인 동안만 codeblock을 실행시키는 것이다.
(let [x 10 y (atom 0)] (while (< @y x) (do (println @y) (swap! y inc)))) 0 1 2 3 4 5 6 7 8 9 nil
doseq
(doseq (sequence) statement#1)doseq는 'foreach'문과 비슷하다. 일단 보면서 foreach문을 연상하자.
(def seq [1 2 3 4 5 6 7]) (defn go [seq] (doseq [n seq] (println n))) (go seq) 1 2 3 4 5 6 7 nil
dotimes
(dotimes [n 10] (println n)) 1 2 3 4 5 6 7 8 9 nil횟수만큼 index가 돈다고 생각하면 된다.
loop
loop [binding] (condition (statement) (recur (binding)))loop는 for-loop를 말하는 것이 아님. loop은 let처럼 값을 바인딩하고 recursion포인트를 지정한다. (그러니 재귀로 돌아갈 곳을 지정한다)
(loop [x 10] (if (< x 1) x (recur (- x 1)))) 0
댓글 없음:
댓글 쓰기