2016-08-06 2 views
0

전체 변수 SKScene과 그 안에있는 모든 함수에 대해 두 개의 변수를 사용할 수 있기를 원합니다. 이 변수 중 하나는 값을 만들기 위해 다른 변수를 사용합니다. 나는 왜 이것을 할 수 없는지 이해하지만, 그것에 대한 해결책은 모른다. 현장 hasnSKScene에서 다른 변수를 사용하여 변수를 초기화하는 방법

class GameScene: SKScene { 

    let num : CGFloat = 1.25 
    let reciprocal = 1/num   // <— This Line 

    override func sceneDidLoad() { 

    } 

    override func update(_ currentTime: TimeInterval) { 
     // Called before each frame is rendered 

    } 

} 

그러나 나는 분명히 오류 4.

Cannot use instance member 'num' within property initializer; property initializers run before 'self' is available

이것은 그것이 skscene에 연결되어 있기 때문에이 변수를 사용할 수 없다는 것을 의미 라인을 얻고, 그리고 :이 코드가 아직 완전히 구현되지 않았다. 오류를 발생시키지 않고이 변수를 선언하고이 클래스의 모든 곳에서 평가할 수있게 만드는 방법이 있습니까? reciprocal 이후

+1

무엇이 오류 메시지이고'recip'입니까? –

+0

@ ÖzgürErsil 오류로 업데이트했습니다. 'recip'은 숫자 – grahamcracker1234

답변

1

그것이 num는 불변의 재산이기 때문에 이전에 후자

class GameScene: SKScene { 

    let num: CGFloat = 1.5 
    var reciprocal: CGFloat { return 1/self.num } 

    // ... 

} 

를 기반으로 계산 된 재산 있도록 감각을 만들 수 런타임에 변경하지 않습니다, num에 직접 의존, 다른 대안은 reciprocal가 처음 사용시 계산 된 lazy 변수가 될 수 있도록

class GameScene: SKScene { 

    let num: CGFloat = 1.5 
    lazy var reciprocal: CGFloat = { return 1/self.num }() 

    // ... 

} 

(또는에 대한 자신 만의 이니셜을 구현 예를 들어 numreciprocal을 초기화 할 수있는 GameScene 주어진 값과 그 역수).

+0

의 역함수를 찾습니다. 이제이 오류가 발생합니다. 인스턴스 멤버 'num'을 'GameScene'유형에 사용할 수 없습니다. – grahamcracker1234

+0

@ grahamcracker1234 내 잘못됨, 'self.'; 업데이트 된 답변을 시도하십시오. – dfri

+0

전에'게으른 var '방식을 시도했습니다. 나는 운이 없다, 아직도 작동하지 않는다. 내가 원래의 방법을 시도하면이 오류가 발생합니다 : 값 '(NSObject) ->() -> GameScene'멤버가 없습니다 num '이 있습니다 – grahamcracker1234

관련 문제