[Clojure] ์ํฐ(atom)
์ํฐ์ ๋ง ๊ทธ๋๋ก ์์์ ์ธ(atomic) ์ฐ์ฐ์ ์ง์ํ๋ ๋ฐ์ดํฐ ํ์
์ด๋ค.
๋ณ๊ฒฝ๊ฐ๋ฅํ ๊ฐ์ ์ฒ๋ฆฌํด์ผ ํ ๋ ์ฃผ๋ก ์ฌ์ฉํ๋ค.
์ํฐ ๊ฐ์ atom ํจ์๋ก ์์ฑํ ์ ์๋ค.
(atom ๊ฐ)
๊ทธ๋ฆฌ๊ณ ์ํฐ ๋ด๋ถ์ ์ค์ ๊ฐ์ ์์ @๋ฅผ ๋ถ์ด๋ ๊ฒ์ผ๋ก ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค.


reset! ํจ์
์ํฐ์ ๊ฐ์ ๋ณ๊ฒฝํ ๋ ์ฌ์ฉํ๋ค.
(reset! ์ํฐ ์๊ฐ)


swap! ํจ์
์ด๊ฑด reset์ ์ฝ๊ฐ ๋ค๋ฅธ ํํ๋ค.
์ฒซ๋ฒ์งธ ์ธ์๋ก ์ ๋ฌ๋ฐ์ ์ํฐ์, ๋๋ฒ์งธ ์ธ์๋ก ๋ฐ์ ํจ์์ ์ธ์๋ก ๋๊ธด๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ๊ฒฐ๊ณผ๊ฐ์ ์ํฐ์ ๋ค์ ๋ฐ์ธ๋ฉํ๋ค.
(swap! ์ํฐ ํจ์)
๊ทธ๋์ ์ํฐ์ ๊ฐ์ 1 ์ฆ๊ฐ์ํค๊ณ ์ถ๋ค๋ฉด, ๊ทธ๋ฅ inc๋ฅผ ๋๊ธฐ๋ฉด ๋๋ค.
์ด๋ ๊ฒ


์ฐธ์กฐ
https://www.tutorialspoint.com/clojure/clojure_atoms.htm