• 카테고리

    질문 & 답변
  • 세부 분야

    모바일 앱 개발

  • 해결 여부

    미해결

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

23.03.27 15:48 작성 조회수 155

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를 무조건 선택한 것을 나타내게 됩니다.