2016-08-06 1 views
0

SKSceneとその内部のすべての関数で2つの変数を使用できるようにします。これらの変数の1つは、別の変数を使用してその値を作成します。なぜ私はこれを行うことはできませんが、私はそれのための修正を知らない理解する。私はこのコードを持っている:SKSceneで別の変数を使用して変数を初期化する方法

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に接続されているので、私は変数を使用できないことを意味し、シーンhasnまだ完全に実装されていません。エラーをスローせずにこの変数を宣言し、このクラスのどこでも評価可能にする方法はありますか?

+1

エラーメッセージと「レシピ」は何ですか? –

+0

@ÖzgürErsil私はエラーでそれを更新しました。 'recip'は数字 – grahamcracker1234

答えて

1

reciprocalnumに直接依存するので、それは前にnumので後者

class GameScene: SKScene { 

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

    // ... 

} 

に基づいて計算された特性であるようにする意味をなさない可能性が不変の特性であり、実行時に変更されることはありません、別の代替でありますreciprocalは、その最初の使用時に計算lazy変数、なるようにする

class GameScene: SKScene { 

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

    // ... 

} 

(または、のために独自のカスタム初期化を実装GameScenenumreciprocalを初期化することができます。与えられた値とその逆数)。

+0

の逆数を見つけました。このエラーが発生しました。インスタンスメンバー 'num'は 'GameScene'タイプでは使用できません。 – grahamcracker1234

+0

@ grahamcracker1234私の悪い、忘れてしまいます。更新された答えを試してください。 – dfri

+0

前に 'lazy var'を試しました。私は運がなかった、まだ動作しません。私は元のメソッドを試してみると、タイプ '(NSObject) - >() - > GameSceneのメンバー' num 'はありません – grahamcracker1234

関連する問題