ํ”ผ๋“œ๋กœ ๋Œ์•„๊ฐ€๊ธฐ
Swift Switch Statementsโ€”A Cleaner Way to Handle Multiple Conditions ๐Ÿ”€
Dev.toDev.to
Frontend

์ปดํŒŒ์ผ ํƒ€์ž„ ๊ฒ€์ฆ๊ณผ ๋‹จ์ผ ๊ฐ’ ์ฝ๊ธฐ๋กœ ๊ตฌํ˜„ํ•œ Swift Switch ์ตœ์ ํ™”

Swift Switch Statementsโ€”A Cleaner Way to Handle Multiple Conditions ๐Ÿ”€

Gamya2026๋…„ 6์›” 8์ผ6๋ถ„beginner

Context

๋‹ค์ค‘ ์กฐ๊ฑด ์ฒ˜๋ฆฌ ์‹œ if-else ์ฒด์ธ์„ ์‚ฌ์šฉํ•จ์— ๋”ฐ๋ผ ์ฝ”๋“œ ๊ฐ€๋…์„ฑ์ด ์ €ํ•˜๋˜๋Š” ๋ฌธ์ œ ๋ฐœ์ƒ. ํŠนํžˆ Enum ํƒ€์ž… ์ฒ˜๋ฆฌ ๊ณผ์ •์—์„œ ํŠน์ • Case ๋ˆ„๋ฝ์ด๋‚˜ ์ค‘๋ณต ์ฒดํฌ๋ฅผ ์žก์•„๋‚ด์ง€ ๋ชปํ•˜๋Š” ๋Ÿฐํƒ€์ž„ ๋ฒ„๊ทธ ์œ„ํ—˜ ์ƒ์กด.

Technical Solution

  • Exhaustive Checking ๊ตฌ์กฐ๋ฅผ ํ†ตํ•œ ๋ชจ๋“  Case ์ฒ˜๋ฆฌ ๊ฐ•์ œ ๋ฐ ์ปดํŒŒ์ผ ํƒ€์ž„ ์˜ค๋ฅ˜ ๊ฒ€์ถœ
  • ๋‹จ์ผ ๋ณ€์ˆ˜ ํ‰๊ฐ€ ๋กœ์ง์„ ํ†ตํ•ด if-else ์ฒด์ธ์˜ ๋ฐ˜๋ณต์ ์ธ ๊ฐ’ ์ฝ๊ธฐ ์˜ค๋ฒ„ํ—ค๋“œ ์ œ๊ฑฐ
  • Implicit Fall-through ๋ฐฉ์ง€ ์„ค๊ณ„๋ฅผ ํ†ตํ•œ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ์ œ์–ด ํ๋ฆ„ ๋ณด์žฅ
  • Fallthrough ํ‚ค์›Œ๋“œ๋ฅผ ํ™œ์šฉํ•œ ๊ณ„์ธต์  ์กฐ๊ฑด ์‹คํ–‰ ์ œ์–ด ๊ฐ€๋Šฅ
  • Default Case ๋ฐฐ์น˜๋ฅผ ํ†ตํ•œ ๋ฌดํ•œ ๊ฐ€๋Šฅ์„ฑ ๋ณ€์ˆ˜์˜ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์•ˆ์ •์„ฑ ํ™•๋ณด

- ๋™์ผ ๋ณ€์ˆ˜์— ๋Œ€ํ•ด 3๊ฐœ ์ด์ƒ์˜ ์กฐ๊ฑด ๋ถ„๊ธฐ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ switch ์ „ํ™˜ ๊ฒ€ํ†  - Enum ํƒ€์ž…๊ณผ switch๋ฅผ ๊ฒฐํ•ฉํ•˜์—ฌ Case ๋ˆ„๋ฝ์œผ๋กœ ์ธํ•œ ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ ์›์ฒœ ์ฐจ๋‹จ - ์กฐ๊ฑด๋ฌธ์— ํ•จ์ˆ˜ ํ˜ธ์ถœ์ด ํฌํ•จ๋œ ๊ฒฝ์šฐ, ์ค‘๋ณต ์‹คํ–‰ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•ด if-else๋ณด๋‹ค switch ์ฑ„ํƒ - ์˜๋„์ ์ธ ์—ฐ์† ์‹คํ–‰์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋งŒ fallthrough ์‚ฌ์šฉ

์›๋ฌธ ์ฝ๊ธฐ