Próbuję ograniczyć zakres klasy do funkcji. To wydaje się działać:Użycie @lizy właściwości w funkcjach powoduje błędy kompilacji
func foo() {
class MyClass {
var s = ""
}
}
Mogę utworzyć wystąpienia MyClass w funkcji foo().
Jednak gdy próbuję dodać specyfikator @lazy do nieruchomości ...
func foo() {
class MyClass {
@lazy var s = ""
}
}
... pojawia się następujący zbudować błędy:
- Global is external, but doesn't have external or weak linkage!
- invalid linkage type for function declaration
- LLVM ERROR: Broken module found, compilation aborted!
Uwaga: Jeśli usuniemy klasę z zakresu funkcji, kod skompiluje:
class MyClass {
@lazy var s = ""
}
Dlaczego to się nie udaje i jak ten problem powinien zostać rozwiązany? Jeśli nie można go rozwiązać, czy istnieje inny sposób korzystania z właściwości @lazy w funkcjach?
Złożyłeś zgłoszenie? https://bugreport.apple.com/ – aleclarson
Mam też pewne problemy z leniwymi varsami powodującymi awarie kompilatora; w moim przypadku dotyczyło to zgodności z protokołem. Musisz zgłosić ten radar. : | – cmyr