강의

멘토링

커뮤니티

Inflearn コミュニティ Q&A

rnfhqhdcjs1236105 のプロフィール画像
rnfhqhdcjs1236105

投稿した質問数

成功した本物のiOS開発者になる[基礎から実務まで]

Location, pin

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

作成

·

250

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,열거형의 인스턴스를 가르킨다고알고있는데 제가 잘못이해한건가요?

iosswift동시성

回答 1

1

enilv0529님의 프로필 이미지
enilv0529
インストラクター

안녕하세요

 

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

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

 

간단히 분류하면

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

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

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

 

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

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

 

rnfhqhdcjs1236105 のプロフィール画像
rnfhqhdcjs1236105

投稿した質問数

質問する