2016-07-22 4 views
1

스위프트를 처음 사용하고 속성을 계산할 수 있지만 저장 프로퍼티를 가질 수없는 열거 형의 특징을 발견했습니다. 열거 형에 신속하게 저장된 속성이없는 이유는 무엇입니까?신속한 열거 형 저장 프로퍼티

답변

2

열거 형은 구조화 된 데이터 형식입니다. 그들은 value type 속성을 저장할 수 있지만 (예 : static 속성) 개체와 같은 인스턴스 속성을 가질 수 없습니다. 또한 계산 된 속성을 사용하면 열거 형의 각 case에 대해 다른 값을 반환 할 수 있습니다. 사과 문서

치형 가입일

는 값 그것이 변수 또는 상수, 또는이 함수에 전달되는 경우에 할당 될 때 복사되는 유형이다.

모든 구조와 열거 형은 Swift의 값 유형입니다. 이는 을 통해 사용자가 만든 구조체 및 열거 형 인스턴스와 해당 속성의 값인 유형이 코드에서 을 전달할 때 항상 복사된다는 것을 의미합니다.

열거 형은 할당 될 때마다 복사되므로 reference type과 같은 인스턴스 변수를 가질 수 없습니다. 차이점은 참조 유형이 복사되는 대신 동일한 인스턴스를 참조한다는 것입니다. 열거 형은 으로 정의되어 있습니다. 따라서 값은 항상 동일합니다..

편집 :

구조체와 열거 사이의 중요한 차이는 구조체 속성을 저장 한 수 있다는 것입니다. 열거 형의 각 사례는 서로 다른 관련 값을 가질 수 있지만 열거 형의 각 값은 열거 형에서 정의한대로 단일 사례를 나타냅니다. 정의에 따르면 열거 형의 경우 값을 절대로 변경해서는 안됩니다. 이러한 빠른 응답하지만 난에 대한 참조 유형, 저장 한 특성

+0

감사 :

구조체 : 값 형식, 저장 한 수있는 속성

열거

: 값 형식, 저장 한 할 수없는 속성

클래스 그 뒤에 기술적 인 이유가 무엇인지에 관해서는 여전히 의심의 여지가 있습니다. 왜 그들은 인스턴스 저장 프로퍼티를 가질 수 없습니까? –

+1

추가 정보로 답변 수정 – Max

+0

구조체도 열거 형과 같은 값 유형이지만 속성이 저장되어 있습니다. 따라서 응답 구조에는 인스턴스 속성이 저장되어 있지 않아야합니다. 내가 뭔가를 놓치고 있다면 나를 바로 잡아라. –