Swift - μ—΄κ±°ν˜•(enum), μ›μ‹œκ°’, μ—°κ΄€κ°’

2022. 6. 30. 12:51ㆍios

Swift - μ—΄κ±°ν˜•(enum), μ›μ‹œκ°’, μ—°κ΄€κ°’

 

μ˜€λŠ˜μ€ enum에 λŒ€ν•΄μ„œ μ•Œμ•„λ³΄λ €κ³  ν•©λ‹ˆλ‹€.

 

enumμ΄λž€?

μ—°κ΄€λœ μƒμˆ˜μ˜ 값을 λ¬Άμ–΄ ν•˜λ‚˜μ˜ νƒ€μž…μœΌλ‘œ μ •μ˜ν•œ μžλ£Œν˜•

 

μ½”λ“œλ₯Ό 톡해 λ°”λ‘œ ν™•μΈν•΄λ΄…μ‹œλ‹€.

apple, microsoft, googleμ΄λΌλŠ” μƒμˆ˜λ“€μ„ λ¬Άμ–΄μ„œ Company라고 μƒˆλ‘œμš΄ νƒ€μž…μ„ μ •μ˜ν–ˆμŠ΅λ‹ˆλ‹€.

 

기쑴의 Int, String, Bool νƒ€μž…κ³ΌλŠ” λ‹€λ₯΄κ²Œ "μ‚¬μš©μž μ •μ˜ νƒ€μž…" μ΄λΌλŠ” 것을 μ•Œμ•„μ•Ό ν•©λ‹ˆλ‹€.

 

 

그럼 이 enum은 μ™œ μ‚¬μš©ν• κΉŒμš”?

 

enumνƒ€μž…μ€ "μ½”λ“œμ˜ μ•ˆμ „μ„±κ³Ό κ°€μ‹œμ„±" λ•Œλ¬Έμ— μ‚¬μš©ν•©λ‹ˆλ‹€. 

- 직접 μ •μ˜ν•œ νƒ€μž…μ•ˆμ—μ„œλ§Œ μƒμˆ˜κ°’μ— μ ‘κ·Όν•  수 있기 λ•Œλ¬Έμ— μ•ˆμ „μ„±μ„ λ†’μ—¬μ£Όκ³  νƒ€μž…κ³Ό μƒμˆ˜λͺ…이 μ§κ΄€μ μœΌλ‘œ μ•Œ 수 있게 μ •μ˜ν•΄λ†¨κΈ° λ•Œλ¬Έμ— κ°€μ‹œμ„±μ„ λ†’μ—¬μ€λ‹ˆλ‹€.

 

enum은 μ–Έμ œ 많이 μ‚¬μš©ν• κΉŒμš”?

 

switchλ¬Έμ—μ„œ 많이 μ‚¬μš©ν•©λ‹ˆλ‹€. μ•„λž˜ μ˜ˆμ‹œλ₯Ό λ³΄κ² μŠ΅λ‹ˆλ‹€.

 

 

CompanyλΌλŠ” νƒ€μž…μ„ μ •μ˜ν•˜λ©΄ μ»΄νŒŒμΌλŸ¬κ°€ 이λ₯Ό μΈμ‹ν•˜κ³  νƒ€μž…λͺ…μ‹œλ₯Ό μƒλž΅ν•  수 있게 ν•΄μ£ΌλŠ”λ°μš”, 

Company.microsoftκ°€ μ•„λ‹Œ .microsoft라고 μ‚¬μš©ν•˜λŠ” 것이 μ˜ˆμ‹œμž…λ‹ˆλ‹€.

 

 

enumμ—μ„œμ˜ μ›μ‹œ κ°’ vs μ—°κ΄€ κ°’

 

μ›μ‹œ κ°’

λ§€μΉ­λ˜λŠ” κΈ°λ³Έκ°’(μ •μˆ˜/λ¬Έμžμ—΄)을 톡해 μ—΄κ±°ν˜•μ„ μ‰½κ²Œ ν™œμš©κ°€λŠ₯ν•œ ν˜•νƒœλ‘œ λ§Œλ“€μ–΄μ£ΌλŠ” κ°’.

 

기쑴의 μ—΄κ±°ν˜•μ— μ ‘κ·Όν•˜λ €λ©΄ νƒ€μž….μƒμˆ˜μ˜ ν˜•νƒœλ‘œ 접근을 ν•΄μ•Όν–ˆλŠ”λ°μš”, μƒμˆ˜λ₯Ό 일일이 λͺ…μ‹œν•΄μ£ΌλŠ” 것은 ν”„λ‘œκ·Έλž˜λ¨Έμž…μž₯μ—μ„œ λΆˆνŽΈν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

이 λ•Œλ¬Έμ— λ‚˜μ˜¨ 것이 μ›μ‹œκ°’μž…λ‹ˆλ‹€. 

μ‚¬μš©λ²•μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

 

Alignment뒀에 : IntλΌλŠ” νƒ€μž…μ„ λΆ™μ—¬μ€ŒμœΌλ‘œμ¨ redμ—λŠ” μžλ™μœΌλ‘œ 0, orangeμ—λŠ” 1, blueμ—λŠ” 2κ°€ rawValue의 ν•˜μœ„ν”„λ‘œνΌν‹°λ‘œ ν• λ‹Ήλ˜μ—ˆμŠ΅λ‹ˆλ‹€. 

 

즉, μ΄μ œλŠ” νƒ€μž…μ˜ μƒμˆ˜λ₯Ό 톡해 값에 μ ‘κ·Όν•˜λŠ” 것 외에 숫자둜 값에 μ ‘κ·Όν•  수 있게 된 κ²ƒμž…λ‹ˆλ‹€.

 

print 두 번째 쀄인 Allignment(rawValue: 0)은 0번째 인덱슀의 값을 좜λ ₯ν•˜λΌλŠ” λͺ…령이며 μ΄λŠ” μ˜΅μ…”λ„νƒ€μž…μœΌλ‘œ λ°˜ν™˜λ˜κΈ° λ•Œλ¬Έμ— κ°•μ œλ‘œ unwrappingν•΄μ£Όμ–΄ 좜λ ₯ν–ˆμŠ΅λ‹ˆλ‹€.  

 

이것이 μ›μ‹œκ°’μž…λ‹ˆλ‹€. 

 

그럼 연관값은 λ¬΄μ—‡μΌκΉŒμš”?

 

μ—°κ΄€κ°’

μ—΄κ±°ν˜•μ—μ„œ ꡬ체적인 좔가정보λ₯Ό μ €μž₯ν•˜κΈ° μœ„ν•œ κ°’.

 

μ›μ‹œκ°’κ³Ό λΉ„κ΅ν•˜λ©΄ μ›μ‹œκ°’μ€ 좔가정보λ₯Ό μ €μž₯ν•  수 μžˆλŠ” ν˜•νƒœκ°€ μ•„λ‹Œ 미리 μ„ μ–Έν•΄ 놓은 κ°’λ§Œμ„ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 

 

λ°˜λ©΄μ— 연관값은 μ„ μ–Έν•  λ•Œ 좔가정보λ₯Ό λ„£μ–΄μ„œ "생성"ν•˜κΈ° λ•Œλ¬Έμ— 미리 μ„ μ–Έν•΄ 놓은 ν‹€μ•ˆμ—μ„œ 재료λ₯Ό λ„£μ–΄ 값을 μ €μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 

 

이해가 잘 μ•ˆ κ°ˆλ•ŒλŠ” μ—­μ‹œ μ½”λ“œλ‘œ ν™•μΈν•΄μ•Όν•©λ‹ˆλ‹€.

 

 

jerryλΌλŠ” μ΄λ¦„μ˜ μ‚¬λžŒμ€ (iq: 120, eq: 100)μ΄λΌλŠ” νŠœν”Œν˜•νƒœμ˜ 값을 κ°€μ§€κ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€. 

μ›μ‹œκ°’μ΄μ˜€λ‹€λ©΄ 이와같이 μœ μ—°ν•˜κ²Œ 값을 ν• λ‹Ήν•  수 μ—†κΈ° λ•Œλ¬Έμ— 연관값을 μ‚¬μš©ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. 

 

이λ₯Ό "μΈμŠ€ν„΄μŠ€ μƒμ„±μ‹œμ μ— 값을 ν• λ‹Ήν•œλ‹€" λΌκ³  ν‘œν˜„ν•©λ‹ˆλ‹€.

 

switchλ¬Έμ—μ„œμ˜ μ‚¬μš©μ˜ˆμ‹œ

 

 

λ§ˆμ§€λ§‰μœΌλ‘œ μ›μ‹œκ°’κ³Ό 연관값을 μ‚¬μš©ν•  λ•Œ μ£Όμ˜ν•  점이 μžˆμŠ΅λ‹ˆλ‹€.

"μ›μ‹œκ°’κ³Ό 연관값을 λ™μ‹œμ— μ •μ˜ν•  수 μ—†λ‹€" 이 λΆ€λΆ„λ§Œ μœ μ˜ν•΄μ„œ μž‘μ„±ν•˜μ‹œλ©΄ λ˜κ² μŠ΅λ‹ˆλ‹€ ^_^

 

'ios' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

Swift - 클래슀 상속과 μž¬μ •μ˜  (1) 2022.07.06
swift - 싱글톀 νŒ¨ν„΄  (0) 2022.07.05
Swift- inout  (0) 2022.06.28
Swift - ν•¨μˆ˜  (0) 2022.06.27
Swift - if let (Optional)  (0) 2022.06.12