수색…


소개

Clojure의 원자는 프로그램 전체에서 변경 될 수있는 변수입니다 (네임 스페이스). Clojure의 대부분의 데이터 유형은 변경 불가능 (다시 정의 할 수 없음)하므로 다시 정의하지 않고 숫자 값을 변경할 수 없습니다. Clojure 프로그래밍에서는 원자가 필수적입니다.

원자 정의

원자를 정의하려면 보통의 def 사용합니다. 그러나 앞에 atom 함수를 추가하십시오 :

(def counter (atom 0))

이 값은 0atom 를 만듭니다. 원자는 모든 유형이 될 수 있습니다.

(def foo (atom "Hello"))
(def bar (atom ["W" "o" "r" "l" "d"]))

원자 값 읽기

원자의 값을 읽으려면 원자 앞에 @ 를 붙이면됩니다.

@counter ; => 0

더 큰 예 :

(def number (atom 3))
(println (inc @number))
;; This should output 4

원자 값 업데이트

원자를 바꾸는 두 가지 명령이 있습니다 swap! reset! . swap! 명령이 주어지고 현재 상태를 기반으로 원자를 변경합니다. reset! 원래 원자의 값이 무엇이든간에 원자의 값을 완전히 변경합니다.

(swap! counter inc) ; => 1
(reset! counter 0) ; => 0

이 예제는 원자를 사용하여 처음 10의 2 거듭 제곱을 출력합니다.

(def count (atom 0))

(while (< @atom 10)
  (swap! atom inc)
  (println (Math/pow 2 @atom)))


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow