Swift - Enum
2023. 10. 17. 18:51ㆍ코딩일기/Swift
Enum 이란?
enum 이라고 하는 열거형(Enumeration) 은 미리 정의된 값 집합!
사용자 지정 데이터 유형을 만드는 데 사용된다.
switch 문을 사용할 때와 같이 코드 내에서 결정을 내린다.
먼저 enum의 형태는 이렇다.
enum Temperature {
case hot
case warm
case cold
}
enum Animal {
case dog(name: String), cat(name: String), bird(name: String)
}
func checkAnimal(animals: Animal) {
switch animals {
case .dog(let name):
print("이 동물은 '개'고, 이름은 \(name)입니다.")
case .cat(let name):
print("이 동물은 '고양이'고, 이름은 \(name)입니다.")
case .bird(let name):
print("이 동물은 '새'고, 이름은 \(name)입니다.")
}
}
checkAnimal(animals: .bird(name: "까치"))
checkAnimal(animals: .dog(name: "찰떡이"))
checkAnimal(animals: Animal.cat(name: "야옹이"))
위에서 Animal 이라는 enum을 checkAnimal() 의 파라미터로 받아온다는 것을 명시해주었기 때문에
컴파일러는 Animal의 타입을 추론할 수 있다. Animal.dog 처럼 명시적이 아닌 .dog 이런식으로 암시적으로 접근이 가능했다.
여기서 딱 떠오른 것이 있는데,
SwiftUI 에서 다음과 같이
Text("BasicView")
.font(.largeTitle)
.largeTitle 은 갑자기 어디서 튀어나온걸까 하는 의문이 있어서 코드를 cmd + click 으로 따라가봤다.
extension은 확장을 한 것이고 (extension에 대해서도 정리 한 다음에 링크를 걸어 놓겠다.)
Font 가 보인다. 또 따라가보자.
Enum이 나올 줄 알았지만 Font 는 struct 였고
Hashable과 Sendable 프로토콜을 채택한 struct 였다.
프로토콜 채택 (다른 언어의 Interface 구현과 같은 말 같다. 이 부분도 더 공부한 후 링크 걸겠다.)
enum TextStyle 찾았다!!
내부 구조까지는 애플이 막아놓은듯 하여 더 접근이 불가능한 것일까?
반응형