์ƒ์„ธ ์ปจํ…์ธ 

๋ณธ๋ฌธ ์ œ๋ชฉ

[ Swift ๊ธฐ์ดˆ ๋ฌธ๋ฒ• ] ์กฐ๊ฑด๋ฌธ - if ๊ตฌ๋ฌธ / guard ๊ตฌ๋ฌธ / switch ๊ตฌ๋ฌธ

๐ŸŽ iOS/Swift

by AHN.Jihyeon 2024. 5. 2. 03:04

๋ณธ๋ฌธ


 

 

 

๐Ÿ”Ž  1 . if ๊ตฌ๋ฌธ


 

  • condition == ์กฐ๊ฑด == boolean
  • ์กฐ๊ฑด์‹์˜ ๊ฒฐ๊ณผ๊ฐ€ true์ผ ๋•Œ๋งŒ ์ฝ”๋“œ ๋ธ”๋ก ๋‚ด๋ถ€์˜ ๊ตฌ๋ฌธ ์‹คํ–‰
  • false์ด๋ฉด ์ฝ”๋“œ๋ธ”๋ก์„ ๋น ์ ธ๋‚˜๊ฐ€ if๋ธ”๋ก ๋‹ค์Œ์— ์œ„์น˜ํ•œ ์ฝ”๋“œ ์ˆ˜ํ–‰

 

โœ… if ~ else

  • if ์กฐ๊ฑด์‹  { ์กฐ๊ฑด์ด true ์ผ ๋•Œ ์‹คํ–‰ํ•  ๊ตฌ๋ฌธ }
  • else { ์กฐ๊ฑด์ด false ์ผ ๋•Œ ์‹คํ–‰ํ•  ๊ตฌ๋ฌธ }

 

โœ… if ~ else if

๋น„๊ตํ•  ์กฐ๊ฑด์ด ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ์„ ๊ฒฝ์šฐ

 

 

if๋ฌธ์€ ์œ„์—์„œ ์•„๋ž˜๋กœ ์กฐ๊ฑด์„ ํ‰๊ฐ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•˜๋‹ค. 

๊ทธ๋ž˜์„œ ํ•ญ์ƒ ๊นŒ๋‹ค๋กœ์šด ์กฐ๊ฑด๋ฌธ์ด ๋จผ์ € ์˜ค๊ณ  ๋Š์ˆœํ•œ ์กฐ๊ฑด๋ฌธ์ด ๋‚˜์ค‘์— ์™€์•ผ ํ•œ๋‹ค. 

 

 

โœ… #available ๊ตฌ๋ฌธ

OS ๋ฒ„์ „์— ๋”ฐ๋ผ ๊ธฐ๋Šฅ์ด ๋‹ค๋ฅด๊ฒŒ ์ œ๊ณต ๋˜์–ด OS ๋ฒ„์ „์— ๋”ฐ๋ผ ๊ตฌ๋ฌธ์„ ๋‚˜๋ˆ  ์ž‘์„ฑํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค.

ํŠน์ • API๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ iOS ๋ฒ„์ „๊ณผ ๊ธฐ๊ธฐ๋ฅผ ์ฒดํฌํ•ด์•ผ ํ•˜๋Š”๋ฐ ์ฝ”๋“œ์ƒ์—์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ๋ฌธ 

 

 

 

๐Ÿ”Ž  2. guard ๊ตฌ๋ฌธ


  • if ๊ตฌ๋ฌธ๊ณผ์˜ ์ฐจ์ด์ 
    - else ๋ธ”๋ก์ด ํ•„์ˆ˜
    - ํ‘œํ˜„์‹์˜ ๊ฒฐ๊ณผ๊ฐ€ true ์ผ ๋•Œ ์‹คํ–‰๋˜๋Š” ๋ธ”๋ก์ด ์—†์Œ 

 

  • if ๊ตฌ๋ฌธ์˜ ๋‹จ์ 
    ์กฐ๊ฑด์ด ์—ฌ๋Ÿฌ ๊ฐœ์ผ ๋•Œ if๋ฌธ ์•ˆ์— if๋ฌธ์ด ๊ณ„์† ์ƒ๊ฒจ ๊ฐ€๋…์„ฑ์ด ์ข‹์ง€ ์•Š์Œ -> guard ๊ตฌ๋ฌธ์˜ ํ•„์š”์„ฑ!!

pyramid of doom

 

 

  • if๊ตฌ๋ฌธ์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ else์ธ ์กฐ๊ฑด์„ ๋จผ์ € ํ™•์ธํ•˜๋ ค๋Š” ์šฉ๋„๊ฐ€ guard ๊ตฌ๋ฌธ์ด๋‹ค!!!
    -> early exit ํ•˜๊ธฐ ์œ„ํ•œ ๋ชฉ์ 
    -> ์กฐ๊ฑด์„ ๋งŒ์กฑํ•œ๋‹ค๋ฉด ๋‹ค์Œ ์ค„์˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.

 

  • guard ๋ฌธ์€ ์กฐ๊ฑด์ด true๋ฉด guard ๊ตฌ๋ฌธ์„ ๋๋‚ด๊ณ  ๋’ค์— ์ด์–ด์ง€๋Š” ๋ฌธ์žฅ์„ ์‹คํ–‰ํ•œ๋‹ค. 
  • false๋ฉด else๋ฌธ์„ ์‹คํ–‰ํ•œ๋‹ค. if๋ฌธ๊ณผ๋Š” ๋‹ฌ๋ฆฌ else ๋ถ€๋ถ„์€ ์ƒ๋žตํ•  ์ˆ˜ ์—†๋‹ค. 
  • guard์˜ else ๋ธ”๋ก์€ ๋ฐ˜๋“œ์‹œ guard๊ฐ€ ํ˜ธ์ถœ๋œ ์Šค์ฝ”ํ”„๋ฅผ ์ข…๋ฃŒ ํ•ด์•ผํ•œ๋‹ค.
    -> ํ•จ์ˆ˜์—์„œ๋Š”  return/ throw
         ๋ฐ˜๋ณต๋ฌธ์—์„œ๋Š” break/ continue์ด์šฉ.
    ๋ฐ˜๋ณต๋ฌธ ์•ˆ์— guard ๊ตฌ๋ฌธ์ด ์ค‘์ฒฉ๋˜์–ด ์žˆ๊ณ  break๋ฅผ ๋งŒ๋‚œ๋‹ค๋ฉด ๋ฐ˜๋ณต๋ฌธ ์ข…๋ฃŒ  
  • ์กฐ๊ฑด์ด ๋งŽ์•„์ ธ๋„ ์ค‘์ฒฉ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์•„ ๊ฐ€๋…์„ฑ์ด ๋†’๋‹ค. 

 

 

 

 

๐Ÿ”Ž  3. switch ๊ตฌ๋ฌธ


: ๋‚˜์—ด๋œ ๊ฐ’์„ ์ˆœ์„œ๋Œ€๋กœ ๋น„๊ตํ•œ ๋‹ค์Œ์— ๊ฐ’์ด ์ผ์น˜ํ•˜๋Š” ์ฒซ๋ฒˆ์งธ ํŒจํ„ด์˜ ์ฝ”๋“œ๋ธ”๋ก์„ ์‹คํ–‰ํ•˜๋Š” ๋ฌธ์žฅ

 

 

  • ๋น„๊ตํ•  ๋Œ€์ƒ๊ณผ case ๋’ค์˜ ๊ฐ’์ด ๊ฐ™๋‹ค๋ฉด ํ•ด๋‹น case์˜ ์ฝ”๋“œ๋ธ”๋Ÿญ์ด ์‹คํ–‰๋œ๋‹ค.
    ์‹คํ–‰ ํ›„ ๋‚˜๋จธ์ง€ case์— ๋Œ€ํ•œ ๋น„๊ต ์—†์ด ๋ฐ”๋กœ switch ๊ตฌ๋ฌธ ์ข…๋ฃŒ
  • ์ผ์น˜ํ•˜๋Š” case๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ๋”๋ผ๋„ ๋งจ ์ฒ˜์Œ์— ์ผ์น˜ํ•œ case ๊ตฌ๋ฌธ ํ•˜๋‚˜๋งŒ ์‹คํ–‰ํ•˜๊ณ  ๋‚˜๋จธ์ง€๋“ค์€ ๋น„๊ต x
  • ๋‘๋ฒˆ์งธ ์ผ€์ด์Šค์ฒ˜๋Ÿผ ๋งค์นญ์‹œํ‚ฌ ํŒจํ„ด์„ ๋‘๊ฐœ ์ด์ƒ ๋‚˜์—ด์‹œํ‚ฌ ์ˆ˜๋„ ์žˆ๋‹ค. (or)
  • default์— ํ•ญ์ƒ ํ•œ์ค„ ์ด์ƒ์˜ ์ฝ”๋“œ๊ฐ€ ํ•„์š”ํ•œ๋ฐ, ์—†๋‹ค๋ฉด break๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 

 

 

  • ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ฐ’์„ ํ•˜๋‚˜์”ฉ ๋งค์นญํ•˜๊ณ  ๊ฐ’์ด ๊ฐ™์€ case ๋ธ”๋ก์„ ์‹คํ–‰ํ•˜๊ณ  ๋‹ค์Œ case๋Š” ํ™•์ธํ•˜์ง€ ์•Š๊ณ  ๋ฐ”๋กœ ๋๋‚œ๋‹ค.

 

 

โœ… fallthrough

  • fallthrough๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ”๋กœ ๋‹ค์Œ case์˜ ๋ฌธ์žฅ์ด ์‹คํ–‰๋œ๋‹ค. 
  • fallthrough์— ์˜ํ•ด ์‹คํ–‰ ํ๋ฆ„์„ ์ „๋‹ฌ ๋ฐ›๋Š” case ๋ธ”๋ก์€ ์ผ์น˜ ์—ฌ๋ถ€์™€ ์ƒ๊ด€ ์—†์ด ์ฝ”๋“œ ์‹คํ–‰ ํ›„ switch ๊ตฌ๋ฌธ ์ข…๋ฃŒ.
  • ๊ตฌํ˜„์— ๋”ฐ๋ผ์„œ ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•  ๋•Œ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. 

 

 

โœ… switch ~ where

 

 

 

 

 

 

 

 

 

 

๐Ÿ”— Reference 

- ์ŠคํŒŒ๋ฅดํƒ€์ฝ”๋”ฉ ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„ Swift ํ•™์Šต์ž๋ฃŒ

 

๊ด€๋ จ๊ธ€ ๋”๋ณด๊ธฐ