2017-07-25 76 views
1

我有一個嵌套類的類。我試圖嵌套類內訪問外部類的變量:在嵌套類的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

回答

0

你可以做這樣的事情

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

相關問題