Potato
์•ˆ๋…•ํ•˜์„ธ์š”, ๊ฐ์žก๋‹ˆ๋‹ค?๐Ÿฅ” ^___^ ๐Ÿ˜บ github ๋ฐ”๋กœ๊ฐ€๊ธฐ ๐Ÿ‘‰๐Ÿป

Swift/Swift BASIC

[Swift] ๊ธฐ์ดˆ ๋ฌธ๋ฒ• - ์—ด๊ฑฐํ˜• (enum)

๊ฐ์ž ๐Ÿฅ” 2022. 1. 20. 18:42
๋ฐ˜์‘ํ˜•

์•ˆ๋…•ํ•˜์„ธ์š” ๊ฐ์ž์ž…๋‹ˆ๋‹ค. ์˜ค๋Š˜ ๋“œ๋””์–ด! ์—ด๊ฑฐํ˜•์— ๋Œ€ํ•œ ๊ธฐ์ดˆ ๋ฌธ๋ฒ•์„ ์•Œ์•„๋ด…์‹œ๋‹ค. ์•ž์„œ ๊ณต๋ถ€ํ•  ๋•Œ ํ•ญ์ƒ ๊ตฌ์กฐ์ฒด, ํด๋ž˜์Šค, ์—ด๊ฑฐํ˜•์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค~~ ์ด๋Ÿฐ์‹์˜ ๋ฌธ๊ตฌ๊ฐ€ ๋งŽ์ด ๋“ฑ์žฅํ–ˆ๋Š”๋ฐ์š”, ์—ด๊ฑฐํ˜•์ด ๊ณผ์—ฐ ์–ด๋–ค๊ฒƒ์ผ์ง€ ๊ถ๊ธˆํ–ˆ์Šต๋‹ˆ๋‹ค. ์—ด๊ฑฐํ˜•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜์ฃ ! ๊ทธ๋Ÿผ ๊ณ !!

๋ณธ ํฌ์ŠคํŒ…์€ ํŒจ์ŠคํŠธ์บ ํผ์Šค์˜ 30๊ฐœ ํ”„๋กœ์ ํŠธ๋กœ ๋ฐฐ์šฐ๋Š” iOS์•ฑ ๊ฐœ๋ฐœ ๊ฐ•์˜๋ฅผ ๋“ค์œผ๋ฉฐ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฐ˜์‘ํ˜•
 

ํŒจ์ŠคํŠธ์บ ํผ์Šค [์ง์žฅ์ธ ์‹ค๋ฌด๊ต์œก]

ํ”„๋กœ๊ทธ๋ž˜๋ฐ, ์˜์ƒํŽธ์ง‘, UX/UI, ๋งˆ์ผ€ํŒ…, ๋ฐ์ดํ„ฐ ๋ถ„์„, ์—‘์…€๊ฐ•์˜, The RED, ๊ตญ๋น„์ง€์›, ๊ธฐ์—…๊ต์œก, ์„œ๋น„์Šค ์ œ๊ณต.

fastcampus.co.kr

 


 

์—ด๊ฑฐํ˜•์ด๋ž€?

์—ด๊ฑฐํ˜•์ด๋ž€, ์—ฐ๊ด€์„ฑ์ด ์žˆ๋Š” ๊ฐ’์„ ๋ชจ์•„ ๋†“์€ ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ด„ ์—ฌ๋ฆ„ ๊ฐ€์„ ๊ฒจ์šธ ๊ฐ™์ด ์—ฐ๊ด€๋œ ํ•ญ๋ชฉ๋ผ๋ฆฌ ๋ฌถ์–ด ๋†“์€ ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ๊ทธ๋Ÿผ ์Šค์œ„ํ”„ํŠธ์—์„œ๋Š” ์—ด๊ฑฐํ˜•์„ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์•Œ์•„๋ณด์ž.

์—ด๊ฑฐํ˜•์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” enum์ด๋ผ๋Š” ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

import Foundation

enum CompassPoint {
	case north, south, east, west
}

// ์ด๋ ‡๊ฒŒ ์—ด๊ฑฐํ˜•์„ ๋งŒ๋“ค๋ฉด, ํ•˜๋‚˜์˜ ์ƒˆ๋กœ์šด ํƒ€์ž…์ฒ˜๋Ÿผ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
// ๊ทธ๋ž˜์„œ enum์€ ๊ผญ ๋Œ€๋ฌธ์ž๋กœ ์ž‘์„ฑํ•ด์•ผํ•œ๋‹ค. CampusPoint์ฒ˜๋Ÿผ!

var direction = CompusPoint.east // direction๋ณ€์ˆ˜๋ฅผ east๋กœ ์ง€์ •ํ–ˆ๋‹ค.

//๊ฐ’์„ ๋ณ€๊ฒฝํ•ด๋ณด์ž.
direction = .west
// direction๋ณ€์ˆ˜๊ฐ€ west๋กœ ๋ฐ”๋€Œ์—ˆ๋‹ค.

์œ„์—์„œ ํ•œ๋ฒˆ ์„ ์–ธ๋œ direction์€, ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ๋•Œ (.) ๋งŒ ์จ๋„ ์œ„ ์ฒ˜๋Ÿผ ์ž๋™์œผ๋กœ CompassPoint์ž„์„ ์ถ”๋ก ํ•˜๊ฒŒ ๋œ๋‹ค.

 

switch๊ตฌ๋ฌธ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์—ด๊ฑฐํ˜•

์ด๋ ‡๊ฒŒ ์Šค์œ„์น˜ ๊ตฌ๋ฌธ๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด ๋ณ€์ˆ˜์— ๋“ค์–ด์žˆ๋Š” ์—ด๊ฑฐํ˜• ํ•ญ๋ชฉ์ด ์–ด๋–ค ํ•ญ๋ชฉ์ธ์ง€ ๋น„๊ต๊ฐ€ ์šฉ์ดํ•˜๋‹ค.

switch direction {
case .north:
	print("north")
    
case .south:
	print("south")

case .east:
	print("east")

case .west:
	print("west")
}

//prints "west"

 

์—ด๊ฑฐํ˜•์— ์›์‹œ๊ฐ’ ๊ฐ–๊ฒŒ ํ•˜๊ธฐ

์—ด๊ฑฐํ˜•์˜ ๊ฐ ํ•ญ๋ชฉ์€, ์ž์ฒด๋กœ๋„ ํ•˜๋‚˜์˜ ๊ฐ’์ด์ง€๋งŒ, ํ•ญ๋ชฉ์— ์›์‹œ๊ฐ’์„ ๊ฐ–๊ฒŒ ํ•  ์ˆ˜ ๋„ ์žˆ๋‹ค. ์ฆ‰, ํŠน์ •ํƒ€์ž…์œผ๋กœ ์ง€์ •๋œ ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿผ ์ด์ œ ํŠน์ • ๊ฐ’์„ ๊ฐ€์ง„ CompassPoint ์—ด๊ฑฐํ˜• ํ•ญ๋ชฉ์— ์›์‹œ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋„๋ก ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด๋ณด์ž.

enum CompassPoint: String {
	case north = "๋ถ"
    case south = "๋‚จ"
    case east = "๋™"
    case west = "์„œ"
}

์œ„ ์ฝ”๋“œ๋Š” stringํ˜•ํƒœ์˜ ์›์‹œ๊ฐ’์„ ๊ฐ–๊ฒŒ ํ•˜์˜€๋‹ค. ๋ณดํ†ต ๋‹ค๋ฅธ ์–ธ์–ด์˜ ์—ด๊ฑฐํ˜•์—์„œ๋Š”, int ํ˜•์‹์˜ ์›์‹œ๊ฐ’๋งŒ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์ง€๋งŒ swift๋Š” ๋‹ค์–‘ํ•œ ํƒ€์ž…์˜ ์›์‹œ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.

์ดˆ๊ธฐํ™”๋œ ์›์‹œ๊ฐ’์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, rawValue๋ผ๋Š” ํ”„๋กœํผํ‹ฐ๋ฅผ ํ†ตํ•ด ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

switch direction {
case .north:
	print(direction.rawValue)
    
case .south:
	print(direction.rawValue)

case .east:
	print(direction.rawValue)

case .west:
	print(direction.rawValue)
}

//prints "์„œ"

 

์›์‹œ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์—ด๊ฑฐํ˜•์„ ๋ฐ˜ํ™˜ํ•˜๊ฒŒ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

let direction2 = CompassPoint(rawValue: "๋‚จ")
//prints "south"

south๋ผ๋Š” ์—ด๊ฑฐํ˜• ํ•ญ๋ชฉ์ด ์ถœ๋ ฅ๋œ๋‹ค.

 

์—ด๊ฑฐํ˜•์— ์—ฐ๊ด€๊ฐ’ ๊ฐ–๊ฒŒ ํ•˜๊ธฐ

์˜ˆ์ œ๋กœ ํ•ธ๋“œํฐ์˜ ์—๋Ÿฌ๋ฅผ ์ •์˜ํ•˜๋Š” ์—ด๊ฑฐํ˜•์„ ๋งŒ๋“ค๊ณ , ์•Œ์ˆ˜์—†๋Š” ์—๋Ÿฌ๋ฅผ ๋œปํ•˜๋Š” unknown๊ณผ ๋ฐฐํ„ฐ๋ฆฌ ๋ฐฉ์ „์„ ๋œปํ•˜๋Š” betteryLow๋ฅผ ์ž‘์„ฑํ•˜์ž. ๊ทธ๋ฆฌ๊ณ  ํ•ญ๋ชฉ ์•ˆ์— ์—ฐ๊ด€๊ฐ’์˜ ํƒ€์ž…์„ ์†Œ๊ด„ํ˜ธ๋กœ ๋ฌถ์–ด์ฃผ๋ฉด ๋œ๋‹ค.

 

์—ฐ๊ด€๊ฐ’์„ ์ถ”์ถœํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” switch๋ฌธ์ด๋‚˜ if๋ฌธ์„ ํ™œ์šฉํ•ด์•ผํ•œ๋‹ค. ๊ทธ๋Ÿผ switch๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์—ฐ๊ด€๊ฐ’์„ ์ถ”์ถœํ•ด๋ณด์ž.

์†Œ๊ด„ํ˜ธ ์•ˆ์— ์—ฐ๊ด€๊ฐ’์„ ์ „๋‹ฌ๋ฐ›์„ ์ƒ์ˆ˜๋ฅผ ์„ ์–ธํ•ด์ฃผ๋ฉด ๋œ๋‹ค. error๋Š” betteryLow๋กœ ์ธํ•œ ์—๋Ÿฌ์ด๊ธฐ ๋•Œ๋ฌธ์—, ๋ฐฐํ„ฐ๋ฆฌ๊ฐ€ ๋ฐฉ์ „๋ฉ๋‹ˆ๋‹ค ๋ผ๋Š” ๋ฉ”์„ธ์ง€๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.

 

๋ฐ˜์‘ํ˜•