수색…
소개
Clojure의 원자는 프로그램 전체에서 변경 될 수있는 변수입니다 (네임 스페이스). Clojure의 대부분의 데이터 유형은 변경 불가능 (다시 정의 할 수 없음)하므로 다시 정의하지 않고 숫자 값을 변경할 수 없습니다. Clojure 프로그래밍에서는 원자가 필수적입니다.
원자 정의
원자를 정의하려면 보통의 def
사용합니다. 그러나 앞에 atom
함수를 추가하십시오 :
(def counter (atom 0))
이 값은 0
의 atom
를 만듭니다. 원자는 모든 유형이 될 수 있습니다.
(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