2016-03-14 135 views
2

我知道如何將存儲的財產的'setter'設置爲私有(例如public private(set) var name: String = "John"),但我們如何將計算的財產的'setter'設置爲private?在這種情況下,變量'age'的'setter'。當我試圖在set(newAge){}前面放置一個關鍵字時,XCode顯示錯誤。那麼是否有可能將計算屬性的'setter'設置爲private?如何將計算屬性的'setter'設置爲private?

public class Person { 

    public private(set) var name: String = "John" 

    var age: Int{ 
     get { 
      return 10 
     } 
     set(newAge){ // how to set this setter to private so to restrict modification 

     } 
    } 
} 

回答

10

你做同樣的方式作爲一個存儲的屬性:

private(set) var age: Int{ 
     get { 
      return 10 
     } 
     set(newAge) { 
      // setter code here 
     } 
    } 
+0

真棒!非常感謝你!這令我困惑不已!現在感謝你,我終於明白了! – Thor

+0

請注意,您只需編寫'set {'而不命名新值,並且新值可以在大括號內作爲'newValue'來訪問。 – BallpointBen

-3

一個計算的屬性從來沒有 - 這是「決定」可以說,當它被調用,所以它不會變得私人化(設置)甚至可以設置。

+0

計算屬性也可以有setter。試試看看。 –

+0

@robmayoff,我站好了!每天上學一天大聲笑 –

相關問題