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 찾았다!!

내부 구조까지는 애플이 막아놓은듯 하여 더 접근이 불가능한 것일까?

 

반응형