2014-11-01 5 views
3

Swift에서 계산 된 속성을 만들려고하고 있는데 속성의 상태를 저장하기 위해 인스턴스 변수가 필요합니다.인스턴스 변수가있는 Swift에서 신속하게 계산 된 속성?

내 슈퍼 클래스의 속성 무시려고 할 때 특별히 발생합니다

class Jedi { 
    var lightSaberColor = "Blue" 
} 


class Sith: Jedi { 
    var _color = "Red" 
    override var lightSaberColor : String{ 
     get{ 
      return _color 
     } 
     set{ 
      _color = newValue 
     } 
    } 

} 

그 컴파일러가 할 수있는 유일한 방법이기 때문에이 계산 된 속성과 제다이에 저장된 속성 lightSaberColor을 무시하고 있습니다를 나를. 또한 getter와 setter를 만들도록 강요합니다. 그리고 그것이 내가 곤경에 처했을 때입니다.

지금까지 내가 찾은 유일한 방법은이 여분의 추악한 var _color을 정의하는 것입니다. 그대가 더 우아한 해결책입니까?

속성 블록 내에 _color을 정의하려고 시도했지만 컴파일되지 않습니다.

더 좋은 방법이 있어야합니다!

+1

왜 속성을 재정의해야합니까? 그 뒤에는 이유가 있어야하며, 적절한 대답을 제공하기 위해 도움을 줄 수 있다고 생각합니다. – Antonio

+0

단지 예일뿐입니다. 진짜 문제는 계산 된 속성에서 iVars를 처리하는 방법입니다. – cfischer

+0

왜 같은 문제에 대해 2 개의 질문을 열지? 하나를 닫으십시오. – Shuo

답변

5

내가 가진 유일한 방법은 _colorprivate으로 선언하는 것입니다.

필요에 따라 willGet 및/또는 didSet 처리기가있는 저장된 속성이 있으면 충분할 수 있습니다.

+0

그건 좋은 생각이야. 나는 그것을 좋아한다. :-) – cfischer

3

왜 이니셜 라이저에 설정하지 않습니까?

class Jedi { 
    var lightSaberColor = "Blue" 
} 

class Sith: Jedi { 
    override init() { 
     super.init() 
     self.lightSaberColor = "Red" 
    } 
}