在嵌套类的Swift 4上,“实例成员不能用于类型”错误

问题描述:

我有一个嵌套类的类。我试图嵌套类内访问外部类的变量:在嵌套类的Swift 4上,“实例成员不能用于类型”错误

class Thing{ 
    var name : String? 
    var t = Thong() 

    class Thong{ 
     func printMe(){ 
      print(name) // error: instance member 'name' cannot be used on type 'Thing' 
     } 
    } 

} 

然而,这使我有以下错误:

instance member 'name' cannot be used on type 'Thing'

有没有绕过这个优雅的方式?我希望嵌套类能够捕获词法范围,就像闭包一样。

感谢

+4

Java不同斯威夫特嵌套类不会自动拥有对外部类 – Steve

你可以做这样的事情

class Thing{ 
    var name : String = "hello world" 
    var t = Thong() 

    init() { 
     t.thing = self 
     t.printMe() 
    } 


    class Thong{ 
     weak var thing: Thing! 

     func printMe(){ 
      print(thing.name) 
     } 
    } 

} 
+0

您提交不编译代码的参考。 –

+1

我想你的意思是做'var t = Thong(t:self)' – Paolo

+0

@CharlesFisher对不起。更新了答案 – Steve