작성
·
198
1
안녕하세요 강의내용중에 질문있어서 글올립니다.
PinLandMark라는 열거형에서
var title: String {
return "\(self)" // self는 case를 가르킴
}
이부분에 해당하는 self가 열거형의 case를 나타낸다고 이해했는데 왜 그렇게 되나요?
밑의코드인
var coordinate:CLLocationCoordinate2D {
switch self {
case .Deoksugung:
return .init(latitude: <#T##CLLocationDegrees#>, longitude: <#T##CLLocationDegrees#>)
case .Hyeongbokgung:
return .init(latitude: <#T##CLLocationDegrees#>, longitude: <#T##CLLocationDegrees#>)
case .SeoulCityHall:
return .init(latitude: <#T##CLLocationDegrees#>, longitude: <#T##CLLocationDegrees#>)
}
}
의경우 switch self가 PinLandmark를 가르키지않나요?
제가 이해한건 self라는건 class,struct,열거형의 인스턴스를 가르킨다고알고있는데 제가 잘못이해한건가요?
답변 1
1
안녕하세요
self라는 키워드가 class, struct, enum에서 인스턴스를 나타낸다는 포괄적인 개념은 같다고 봐도 되지만
어떤 타입이냐에 따라 self가 가진 기능적 특징이 모두 다릅니다.
간단히 분류하면
class에서의 self는 참조 된 것 이고
struct에스의 self는 복사 된 것 입니다.
enum에서의 self는 특정한 case가 선택된 것 입니다.
enum에서 case가 선택되지 않은 인스턴스는 만들어질 수 없습니다.
그러니 enum에서 self는 특정한 case를 무조건 선택한 것을 나타내게 됩니다.