2016-03-14 159 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,我站好了!每天上学一天大声笑 –

相关问题