2016-08-18 5 views
11

열거 형이나 구조체가 인스턴스에 값을 저장하지 않으면 정적이라고 가정 해 보겠습니다. 정적 열거 형과 정적 구조체간에 차이가 있습니까?정적 열거 형과 정적 구조체의 차이점

enum StaticEnum { 
    static var someStaticVar = 0 
    static func someStaticFunc() {} 
} 

struct StaticStruct { 
    static var someStaticVar = 0 
    static func someStaticFunc() {} 
} 
+1

관련 항목 : http://stackoverflow.com/questions/38585344/swift-constants-struct-or-enum. –

답변

9

가장 큰 차이점은 어떤 경우도 열거 형을 구성 할 수 없다는 것입니다. 따라서 일부 정적 멤버의 네임 스페이스 역할을할만한 것을 찾고 있다면 우연히 인스턴스를 만들 수 없으므로 열거 형을 사용하는 것이 좋습니다.

let e = StaticEnum() // error: 'StaticEnum' cannot be constructed because it has no accessible initializers 
let s = StaticStruct() // Useless, but legal 
+0

완벽한, 감사합니다! –

+1

이름 공간의 방법으로'enum'을 사용하는 것이 이상하게 보입니다. 처음에는 꽤 불분명했습니다. 그러나 본질적으로 대소 문자가없는'enum'처럼 작동하는 별개의'namespace' 구조를 갖는 것이 가치가 있는지 확신 할 수 없습니다. – Alexander

+0

@AlexanderMomchliov 확실히 네임 스페이스로 사례가없는 열거 형을 사용하는 것이 이상하다고 생각합니다. 의도 한 기능보다 유용한 부작용과 비슷합니다. '네임 스페이스'가 실제로 얼마나 필요한지는 드물지만 (stdlib의 한 예를 생각하면된다. ['MemoryLayout '] (https://developer.apple.com/reference/swift/memorylayout). generic 매개 변수를 사용하므로 '네임 스페이스'가 아님), 네임 스페이스 (namespace) 구조가 없음을 이해할 수 있습니다. – Hamish

관련 문제