[Clojure] ์•„ํ†ฐ(atom)

[์›๋ณธ ๋งํฌ]

์•„ํ†ฐ์€ ๋ง ๊ทธ๋Œ€๋กœ ์›์ž์ ์ธ(atomic) ์—ฐ์‚ฐ์„ ์ง€์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด๋‹ค.
๋ณ€๊ฒฝ๊ฐ€๋Šฅํ•œ ๊ฐ’์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

์•„ํ†ฐ ๊ฐ’์€ atom ํ•จ์ˆ˜๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
(atom ๊ฐ’)
๊ทธ๋ฆฌ๊ณ  ์•„ํ†ฐ ๋‚ด๋ถ€์˜ ์‹ค์ œ ๊ฐ’์€ ์•ž์— @๋ฅผ ๋ถ™์ด๋Š” ๊ฒƒ์œผ๋กœ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. image

image


reset! ํ•จ์ˆ˜
์•„ํ†ฐ์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
(reset! ์•„ํ†ฐ ์ƒˆ๊ฐ’) image

image


swap! ํ•จ์ˆ˜
์ด๊ฑด reset์˜ ์•ฝ๊ฐ„ ๋‹ค๋ฅธ ํ˜•ํƒœ๋‹ค.
์ฒซ๋ฒˆ์งธ ์ธ์ž๋กœ ์ „๋‹ฌ๋ฐ›์€ ์•„ํ†ฐ์„, ๋‘๋ฒˆ์งธ ์ธ์ž๋กœ ๋ฐ›์€ ํ•จ์ˆ˜์˜ ์ธ์ž๋กœ ๋„˜๊ธด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ๊ฒฐ๊ณผ๊ฐ’์„ ์•„ํ†ฐ์— ๋‹ค์‹œ ๋ฐ”์ธ๋”ฉํ•œ๋‹ค.
(swap! ์•„ํ†ฐ ํ•จ์ˆ˜)

๊ทธ๋ž˜์„œ ์•„ํ†ฐ์˜ ๊ฐ’์„ 1 ์ฆ๊ฐ€์‹œํ‚ค๊ณ  ์‹ถ๋‹ค๋ฉด, ๊ทธ๋ƒฅ inc๋ฅผ ๋„˜๊ธฐ๋ฉด ๋œ๋‹ค.
์ด๋ ‡๊ฒŒ image

image



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