안녕하세요 오늘은 enum을 박살 내봅시다 🥊
import Foundation
// 경우를 나눈다고 생각
enum School {
// 초, 중, 고
case elementary
case middle
case high
}
// School이라는 enum에 접근하여 case를 들고옴
let yourSchool = School.elementary
print("yourSchool: \(yourSchool)")
enum은 경우를 나누는 것이라고 쉽게 생각하시면 될 것 같습니다.
위 코드를 보면 'enum School'에서 elementary, middle, high라는 세 가지 경우로 나누어져 있는 것을 알 수 있죠? 그 후 yourSchool이라는 상수에 School이라는 enum에서 elementary를 들고 와 대입하는 모습입니다.
결과
위에서 값이 없는 enum의 기본 사용법을 알려드렸습니다. 이번엔 값이 있는 enum 사용법을 알려드리겠습니다.
import Foundation
enum Grade: Int {
case first = 1
case second = 2
}
let yourGrade = Grade.second
// Grade의 enum second에 저장된 값에 접근하고 싶으면. rawValue를 붙이면 된다
print(yourGrade.rawValue)
.rawValue를 적으면 enum의 값에 접근할 수 있다.
결과
이번엔 Parameter(매개변수)를 가지는 enum에 대해 알아봅시다
enum SchoolDetail {
// name이라는 parameter(매개 변수)를 갖는 경우
case elementary(name: String)
case middle(name: String)
case high(name: String)
}
let yourMiddleSchoolName = SchoolDetail.middle(name: "창브로중학교")
print(yourMiddleSchoolName)
결과가 "창브로중학교"라고 나올 줄 알았는데,,
결과
옆에 원하지 않는 이상한 게 많이 붙었습니다 화가 나죠?🤬
그럼 어떻게 해야 name만 쏙 뽑아올 수 있을까요??
enum SchoolDetail {
// name이라는 parameter(매개 변수)를 갖는 경우
case elementary(name: String)
case middle(name: String)
case high(name: String)
// SchoolDetail안에 있는 함수
func getSchoolName() -> String {
// 분기 처리
// self = 나 자신(SchoolDetail)
switch self {
// elementary라면 name만 반환
case.elementary(let name):
return name
// 위 case랑 같은 코드지만 이렇게도 쓸 수 있다.
case let.middle(name):
return name
case.high(let name):
return name
}
}
}
let yourMiddleSchoolName = SchoolDetail.middle(name: "창브로중학교")
// getSchoolName() 적용
print(yourMiddleSchoolName.getSchoolName())
이렇게 enum 안에 name만 쏙 뽑아 올수 있게 도와주는 함수를 생성해 주는 것입니다.
이 함수는 String을 반환하네요. 즉 String 값을 꼭 return 해줘야 합니다!!
위 코드의 주석에도 나와있듯이 switch에서 분기 처리를 해주고 분기마다 원하는 코드를 작성하면 됩니다.
마지막으로 출력을 할 때 저희가 만든 함수를 적용해 줍니다.
결과
저희가 원하는 대로 원하지 않는 이상한 것들은 다 사라지고 '창브로중학교'만 출력되는 것을 볼 수 있습니다 ^_^
오늘도 swift 문법 박살 내신다고 고생하셨습니다 🔥