[Clojure] ๋ถ๊ธฐ๋ฌธ
์กฐ๊ฑด์ ๋ฐ๋ฅธ ๋ถ๊ธฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ข์ ํจ์๋ก๋ ์ด๋ฐ ๊ฒ๋ค์ด ์๋ค.
when๋ฌธ
๊ธฐ์กด ๋ช
๋ นํ ์ธ์ด์์์ ๋จ์ผ if๋ฌธ์ ํด๋นํ๋ค.์ด๊ฑด ์กฐ๊ฑด์์ด ์ฐธ์ผ ๊ฒฝ์ฐ ๋ง์ง๋ง ํํ์์ ๋ฐํํ๊ณ ,
๊ฑฐ์ง์ผ ๊ฒฝ์ฐ์ ์๋ฌด๊ฒ๋ ์ํ๊ณ ๊ทธ๋ฅ nil์ ๋ฐํํ๋ค.
(when(์กฐ๊ฑด์)
**ย ย ย ํํ์๋ค...**
)
์๋๋ ๊ฐ๋จํ ์์ ๋ค.



if๋ฌธ
๊ธฐ์กด ๋ช
๋ นํ ์ธ์ด์์์ if-else๋ฌธ์ ํด๋นํ๋ค.
(if (์กฐ๊ฑด์) ํํ์1 ํํ์2)
์กฐ๊ฑด์์ด ์ฐธ์ด๋ฉด ์ฒซ๋ฒ์งธ ํํ์์, ๊ฑฐ์ง์ด๋ฉด ๋๋ฒ์งธ ํํ์์ ๋ฐํํ๋ค.

์ง์ค

๊ฑฐ์ง
if-do๋ฌธ
์ด๊ฑด ๊ทธ๋ฅ ๊ธฐ์กด if๋ฌธ์, ์ฌ๋ฌ ํํ์์ ์ด์ ์ ์๋ do๋ฌธ์ ๋ถ์ฌ ์์ฉํ ํํ์ด๋ค.
๊ฐ do๋ฌธ์ ๋ง์ง๋ง ํํ์์ด ๋ฐํ๊ฐ์ด ๋๋ค.


case๋ฌธ
๋ค์ค๋ถ๊ธฐ๋ฌธ์ผ๋ก, ๊ธฐ์กด์ ์ค์์น๋ฌธ์ ํด๋น๋๋ค.
(case ์ธ์
**ย ย ย ๋์๊ฐ1 ํํ์1**
**ย ย ย ๋์๊ฐ2 ํํ์2**
**ย ย ย ...**
**ย ย ย ํํ์N**
)
๋ง์ง๋ง ํํ์์ด ๋ํดํธ ๊ตฌ๋ฌธ์ด๋ค.

์ธ์๋ก ์ ๋ฌํ ๊ฐ๊ณผ ๋งค์นญ๋๋ ๋์๊ฐ์ด ํํ์์ด ์ํ, ๋ฐํ๋๋ค.

๋งค์นญ๋๋ ๊ฐ์ด ์์ ๊ฒฝ์ฐ์ ๋ง์ง๋ง ํํ์์ ๋ฐํํ๋ค.
cond๋ฌธ
์ด๊ฑด ์์ case๋ฌธ๊ณผ ๋น์ทํ ๋ค์ค๋ถ๊ธฐ๋ฌธ์ด๋ค.
๋์๊ฐ์ด ์๋๋ผ ์กฐ๊ฑด์์ ๋ฌ์๋๋ค๋ ๊ฒ ๋ค๋ฅด๋ค.
(cond
**ย ย ย ์กฐ๊ฑด์1 ํํ์1**
**ย ย ย ์กฐ๊ฑด์2 ํํ์2**
**ย ย ย ...**
**ย ย ย :else ํํ์N**
)
:else๋ ํด๋น๋๋ ์กฐ๊ฑด์ด ์์ ๊ฒฝ์ฐ ๋งค์นญ๋๋ค.
์ด๋ ๊ฒ ์ฌ์ฉํ๋ฉด ๋๋ค.


์ฐธ์กฐ
https://www.tutorialspoint.com/clojure/clojure_decision_making.htm
https://clojuredocs.org/clojure.core/when