-
[Swift] Enumeration (μ΄κ±°ν), Raw Value (μμκ°)Swift 2022. 2. 15. 08:37
(λͺ¨λ μ½λλ Playgroundμμ μμ±λμμ΅λλ€.)
μ΄λ² μκ°μλ μ΄κ±°ν (Enumeration)κ³Ό μμ κ° (Raw Value) μ λν΄ μμ보λλ‘ νμ.
1. Enumeration
μ΄κ±°νμ μ°κ΄λ μμλ€μ νλμ μ΄λ¦μΌλ‘ λ¬Άμ μλ£νμΌλ‘, μ½λ λ΄μμ μμ νκ² κ°μ μ¬μ©ν μ μλλ‘ νλ€.
λ¬Έλ²μ μλμ κ°λ€.

μ΄κ±°νμ ν¬ν¨λ μμλ€μ μμλΌ μ½μ§ μκ³ , Enumeration case λλ caseλΌκ³ νλ€.
μ΄κ±°νμ μ΄λ¦μ UpperCamelCaseλ‘, case μ΄λ¦μ lowerCamelCaseλ‘ μ μΈνλ€.
case μ΄λ¦μ μ€λ³΅λμ΄μλ μλκ³ , caseName2, caseName3κ³Ό κ°μ΄ μ½€λ§(,)λ₯Ό μ΄μ©νμ¬ ν μ€μ μ μΈνλ κ²λ κ°λ₯νλ€.
μλ μμλ μμΌμ μ΄κ±°νμΌλ‘ μ μΈν κ²μ΄λ€.
enum Weekday { case monday case tuesday case wednesday case thursday case friday case saturday case sunday }μ΄κ±°νμ μΌμ΄μ€μ μ κ·Όν λμλ μλμ κ°μ΄ μ΄κ±°νμ μ΄λ¦.μΌμ΄μ€ μ΄λ¦ μΌλ‘ μ κ·Όν μ μλ€.
Weekday.monday Weekday.tuesday Weekday.wednesday Weekday.thursday Weekday.friday Weekday.saturday Weekday.sunday var today = Weekday.sunday today = .saturdaytodayμλ νμ¬ μ΄κ±°ν Weekdayκ° μ μ₯λμ΄μκΈ° λλ¬Έμ, μ»΄νμΌλ¬κ° todayμ μλ£νμ μκ³ μλ€.
λ°λΌμ μ΄ λλ μ΄κ±°νμ μ΄λ¦μ μλ΅ν μ μλ€. λ°λ©΄, .κ³Ό μΌμ΄μ€ μ΄λ¦μ μλ΅ν μ μλ€.
μ΄κ±°νμ caseλ λ 립μ μΈ κ°μ΄κΈ° λλ¬Έμ λΉκ΅λ₯Ό ν λμλ λΉκ΅ μ°μ°μλ₯Ό μ¬μ©νλ€.
var today = Weekday.sunday today = .saturday if today == .sunday { print("λ€κ°μ€λ μμμΌμ μ€λΉνμΈμ.") } else if today == .saturday { print("You can take a rest") } else { print("곡λΆνμΈμ.") }caseλ₯Ό κΈ°μ€μΌλ‘ μ½λλ₯Ό λΆκΈ°ν λμλ μλμ κ°μ΄ switch λ¬Έμ μ£Όλ‘ μ¬μ©νλ€.
var today = Weekday.sunday today = .saturday switch today { case .saturday: "You can take a rest" case .sunday: "λ€κ°μ€λ μμμΌμ μ€λΉνμΈμ." default: "μΌνμΈμ." }λν, μ΄κ±°νμ λͺ¨λ caseλ₯Ό switch λ¬Έμμ λ§€μΉμν¬ μ μλ€λ©΄, default λΈλ‘μ μμ±νμ§ μμλ λλ€.
var today = Weekday.sunday today = .saturday switch today { case .saturday: "You can take a rest" case .sunday: "λ€κ°μ€λ μμμΌμ μ€λΉνμΈμ." case .monday, .tuesday, .wednesday, .tuesday, .friday: "μΌνμΈμ" }2. Raw Value (μμκ°)
Enumeration caseλ κ·Έ μμ²΄λ‘ λ 립μ μΈ κ°μ΄μ§λ§, μ΄κ±°ν λ΄λΆμ λ λ€λ₯Έ κ°μ μ μ₯ν μ μλ€.
μ΄ κ°μ Raw Value (μμκ°)μ΄λΌκ³ νλλ°, μ΄κ±°νμ μΌμ΄μ€μ κ΄λ ¨λ λ λ€λ₯Έ κ°μ ν¨κ» μ μ₯ν΄μΌν λ μ νμ μΌλ‘ μ μ₯νλ€.
λ¬Έλ²μ μλμ κ°λ€.

μμνμ μλ£νμΌλ‘λ String, Character, Number Typesκ° μ¬ μ μλ€.
μμκ°μ μ μ₯νλ λΆλΆμ μλ΅ν΄λ λλλ°, μλ£νλ§λ€ μ ν΄μ§ κ·μΉμ μν΄ κΈ°λ³Έ κ°μ΄ μ μ₯λλ€.
μμκ° μλ£νμ μ μΈνλ©΄, μμκ°μ μ κ·Όν μ μλ μμ±μ΄ μ 곡λλλ° μ΄λ₯Ό rawValueλΌκ³ νλ€.
μλ μμλ μμ μ μΈνλ μ΄κ±°ν Weekdayμ μμκ°μ μλ£νμ Intλ‘ μ μΈν κ²μ΄λ€.

μμκ°μ μ§μ μ μ₯ν΄μ£Όμ§ μμκΈ° λλ¬Έμ, 첫λ²μ§Έ μΌμ΄μ€μΈ mondayμλ rawValueλ‘ 0μ΄, κ·Έλ¦¬κ³ μ°¨λ‘λλ‘ 1λΆν° 6κΉμ§μ κ°μ΄ μ μ₯λ κ²μ λ³Ό μ μλ€.
μ΄μ²λΌ μμκ°μ μ§μ μ§μ νμ§ μμΌλ©΄ κ°μ΄ μλμΌλ‘ μ μ₯λλλ°, κΈ°μ€ κ°μ νμ μ΄μ κ°μ΄λ€.
λ§μ½ μλμ²λΌ case thursdayμ μμκ°μ μ§μ μ§μ ν΄μ£Όλ©΄, κ·Έ μ΄ν μΌμ΄μ€μ μμκ°μ thursdayμμ 1μ΄ μ¦κ°ν κ°μ΄ λλ€.

λν, μμκ°μ μ μΈ μ΄νμλ μμκ°μ λ³κ²½ν μ μλ€. 'rawValue' is immutableμ΄λ λ©μμ§λ₯Ό λ³Ό μ μλ€.

μ΄κ±°νμ μΌμ΄μ€λ₯Ό μμ±μλ₯Ό μ΄μ©νμ¬ μμ±νλ κ²λ κ°λ₯νλ€.

νλΌλ―Έν°λ‘ rawValueλ₯Ό μ λ¬νλ©΄, κ·Έ rawValueμ ν΄λΉνλ caseκ° μμ±λλ€.
λ§μ½ μ‘΄μ¬νμ§ μλ rawValueλ₯Ό μ λ¬νλ©΄ nilμ 리ν΄νλ€. λ°λΌμ μμ±μμ 리ν΄νμ Optional + μ΄κ±°ν νμ μ΄λ€.
κ·Έλ λ€λ©΄ μμκ°μ μλ£νμ Stringκ³Ό Characterλ‘ μ μΈνλ κ²½μ°λ μ΄λ¨κΉ?
λ¨Όμ μμκ°μ μλ£νμ StringμΌλ‘ μ μΈνκ³ μμκ°μ μ μ₯νμ§ μμΌλ©΄, μΌμ΄μ€ μ΄λ¦κ³Ό λμΌν λ¬Έμμ΄μ΄ μμκ°μΌλ‘ μ μ₯λλ€.
λ¬Όλ‘ , μμκ°μ μ§μ λ¬Έμμ΄μ μ μ₯νλ κ²λ κ°λ₯νλ€.

μμκ°μ μλ£νμ Characterλ‘ μ μΈν κ²½μ°μλ, λ°λμ μμκ°μ μ§μ μ§μ ν΄μ£Όμ΄μΌνλ€.
λ§μ½ μμκ°μ μ μ₯ν΄μ£Όμ§ μμΌλ©΄, μλμ κ°μ΄ μ€λ₯κ° λ°μνλ€.

Character νμλ νλμ λ¬Έμλ§ μ μ₯ν μ μκΈ° λλ¬Έμ, Stringμ²λΌ μΌμ΄μ€ μ΄λ¦κ³Ό λμΌν κ°μ μ μ₯νλ κ²μ΄ λΆκ°λ₯νκΈ° λλ¬Έμ λ°λμ μμκ°μ μ§μ ν΄μ£Όλλ‘ νμ.

'Swift' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Swift] CGColor (0) 2022.02.15 [Swift] CGFloat (0) 2022.02.15 [Swift] Collection (Array, Dictionary, Set) (0) 2022.02.15 [Swift] Tuples (0) 2022.02.15 [Swift] Closure, Syntax Optimization (0) 2022.02.15