[Clojure] ๋ถ„๊ธฐ๋ฌธ

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

์กฐ๊ฑด์— ๋”ฐ๋ฅธ ๋ถ„๊ธฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์ข‹์€ ํ•จ์ˆ˜๋กœ๋Š” ์ด๋Ÿฐ ๊ฒƒ๋“ค์ด ์žˆ๋‹ค.

when๋ฌธ
๊ธฐ์กด ๋ช…๋ นํ˜• ์–ธ์–ด์—์„œ์˜ ๋‹จ์ผ if๋ฌธ์— ํ•ด๋‹นํ•œ๋‹ค.์ด๊ฑด ์กฐ๊ฑด์‹์ด ์ฐธ์ผ ๊ฒฝ์šฐ ๋งˆ์ง€๋ง‰ ํ‘œํ˜„์‹์„ ๋ฐ˜ํ™˜ํ•˜๊ณ ,
๊ฑฐ์ง“์ผ ๊ฒฝ์šฐ์—” ์•„๋ฌด๊ฒƒ๋„ ์•ˆํ•˜๊ณ  ๊ทธ๋ƒฅ nil์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

(when(์กฐ๊ฑด์‹)
**ย ย ย  ํ‘œํ˜„์‹๋“ค...**
)

์•„๋ž˜๋Š” ๊ฐ„๋‹จํ•œ ์˜ˆ์ œ๋‹ค. image

image

image


if๋ฌธ
๊ธฐ์กด ๋ช…๋ นํ˜• ์–ธ์–ด์—์„œ์˜ if-else๋ฌธ์— ํ•ด๋‹นํ•œ๋‹ค.

(if (์กฐ๊ฑด์‹) ํ‘œํ˜„์‹1 ํ‘œํ˜„์‹2)

์กฐ๊ฑด์‹์ด ์ฐธ์ด๋ฉด ์ฒซ๋ฒˆ์งธ ํ‘œํ˜„์‹์„, ๊ฑฐ์ง“์ด๋ฉด ๋‘๋ฒˆ์งธ ํ‘œํ˜„์‹์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. image

image ์ง„์‹ค

image

image ๊ฑฐ์ง“


if-do๋ฌธ
์ด๊ฑด ๊ทธ๋ƒฅ ๊ธฐ์กด if๋ฌธ์—, ์—ฌ๋Ÿฌ ํ‘œํ˜„์‹์„ ์ด์„ ์ˆ˜ ์žˆ๋Š” do๋ฌธ์„ ๋ถ™์—ฌ ์‘์šฉํ•œ ํ‘œํ˜„์ด๋‹ค.
๊ฐ do๋ฌธ์˜ ๋งˆ์ง€๋ง‰ ํ‘œํ˜„์‹์ด ๋ฐ˜ํ™˜๊ฐ’์ด ๋œ๋‹ค. image

image


case๋ฌธ
๋‹ค์ค‘๋ถ„๊ธฐ๋ฌธ์œผ๋กœ, ๊ธฐ์กด์˜ ์Šค์œ„์น˜๋ฌธ์— ํ•ด๋‹น๋œ๋‹ค.

(case ์ธ์ž
**ย ย ย  ๋Œ€์‘๊ฐ’1 ํ‘œํ˜„์‹1**
**ย ย ย  ๋Œ€์‘๊ฐ’2 ํ‘œํ˜„์‹2**
**ย ย ย  ...**
**ย ย ย  ํ‘œํ˜„์‹N**
)

๋งˆ์ง€๋ง‰ ํ‘œํ˜„์‹์ด ๋””ํดํŠธ ๊ตฌ๋ฌธ์ด๋‹ค.


image

image ์ธ์ž๋กœ ์ „๋‹ฌํ•œ ๊ฐ’๊ณผ ๋งค์นญ๋˜๋Š” ๋Œ€์‘๊ฐ’์ด ํ‘œํ˜„์‹์ด ์ˆ˜ํ–‰, ๋ฐ˜ํ™˜๋œ๋‹ค.

image

image ๋งค์นญ๋˜๋Š” ๊ฐ’์ด ์—†์„ ๊ฒฝ์šฐ์—” ๋งˆ์ง€๋ง‰ ํ‘œํ˜„์‹์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.


cond๋ฌธ
์ด๊ฑด ์œ„์˜ case๋ฌธ๊ณผ ๋น„์Šทํ•œ ๋‹ค์ค‘๋ถ„๊ธฐ๋ฌธ์ด๋‹ค.
๋Œ€์‘๊ฐ’์ด ์•„๋‹ˆ๋ผ ์กฐ๊ฑด์‹์„ ๋‹ฌ์•„๋‘”๋‹ค๋Š” ๊ฒŒ ๋‹ค๋ฅด๋‹ค.

(cond
**ย ย ย  ์กฐ๊ฑด์‹1 ํ‘œํ˜„์‹1**
**ย ย ย  ์กฐ๊ฑด์‹2 ํ‘œํ˜„์‹2**
**ย ย ย  ...**
**ย ย ย  :else ํ‘œํ˜„์‹N**
)

:else๋Š” ํ•ด๋‹น๋˜๋Š” ์กฐ๊ฑด์ด ์—†์„ ๊ฒฝ์šฐ ๋งค์นญ๋œ๋‹ค.

์ด๋ ‡๊ฒŒ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. image

image


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