인프런 커뮤니티 질문&답변

수열임님의 프로필 이미지

작성한 질문수

성공적인 진짜 iOS 개발자 되기 [기초부터 실무까지]

Location, pin

Location.pin강의에서 self질문이요

23.03.27 15:48 작성

·

183

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

iOS Developer - 이정님의 프로필 이미지
iOS Developer - 이정
지식공유자

2023. 03. 27. 16:19

안녕하세요

 

self라는 키워드가 class, struct, enum에서 인스턴스를 나타낸다는 포괄적인 개념은 같다고 봐도 되지만

어떤 타입이냐에 따라 self가 가진 기능적 특징이 모두 다릅니다.

 

간단히 분류하면

class에서의 self는 참조 된 것 이고

struct에스의 self는 복사 된 것 입니다.

enum에서의 self는 특정한 case가 선택된 것 입니다.

 

enum에서 case가 선택되지 않은 인스턴스는 만들어질 수 없습니다.

그러니 enum에서 self는 특정한 case를 무조건 선택한 것을 나타내게 됩니다.