2014-11-04 11 views
6

mam leniwe parametr, który ja próbuje wywołać funkcję pomocniczą w:Missing argument za parametr # 1 w poł

class ColumnNode: SCNNode { 

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

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

Niestety na linii return buildColumPart() Dostaję:

Missing argument for parameter #1 in call 

Co to dokładnie oznacza i jak mogę to naprawić?

Odpowiedz

13

Trzeba użyć self dostęp do metody instancji właściwości leniwych:

class ColumnNode: SCNNode { 

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

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

Co ciekawe, powodem jest to narzekają parametr # 1 jest to, że metody instancji są faktycznie metody klasy, które mają wystąpienie jako parametr i zwróć zamknięcie z przechwyconą instancją - zamiast self.buildColumPart(), możesz zamiast tego zadzwonić pod numer buildColumPart(self)().

+0

To bardzo interesujące. Dzięki za szczegółowe wyjaśnienie –

Powiązane problemy