2014-11-04 9 views
6

Ich habe einen faulen Parameter, die ich versucht bin eine Hilfsfunktion in aufzurufen:Fehlendes Argument für den Parameter # 1 in Call

class ColumnNode: SCNNode { 

    lazy var upperColumnNode: SCNNode = { 
     return buildColumPart() 
    }() 

    func buildColumPart() -> SCNNode { 
     var node = SCNNode() 
     ... 
     return node 
    } 
} 

Leider on line return buildColumPart() Ich erhalte:

Missing argument for parameter #1 in call 

Was genau bedeutet das und wie repariere ich es?

Antwort

13

Sie müssen self zu verwenden, um Instanzmethoden in faulen Eigenschaften zugreifen:

class ColumnNode: SCNNode { 

    lazy var upperColumnNode: SCNNode = { 
     return self.buildColumPart() 
    }() 

    func buildColumPart() -> SCNNode { 
     var node = SCNNode() 
     ... 
     return node 
    } 
} 

Interessanterweise ist der Grund, es ist über den Parameter # beschweren 1 ist, dass die Instanzmethoden sind tatsächlich Klassenmethoden, die eine Instanz nehmen als ein Parameter und gibt eine Schließung mit der erfassten Instanz zurück - anstelle von self.buildColumPart() können Sie stattdessen buildColumPart(self)() aufrufen.

+0

Das ist sehr interessant. Danke für die ausführliche Erklärung –

Verwandte Themen