您的位置:首页 > 移动开发 > Swift

Swift类中如何创建一个对外只读对内可读写的属性

2016-07-12 10:11 441 查看
很简单用private修饰符,后面跟限制关键字set:

class Day{
private(set) var rawValue:Int = 0

func showRawValue(){
print("raw is \(rawValue)")
}

func forwardRawValue(){
rawValue += 1
}
}


不过如上上述类定义在playground中的话,实际你会发现如果去掉后面的(set)照样可以在外部访问:

let day = Day()
day.rawValue+=1 //that's OK!
day.forwardRawValue()
day.showRawValue()


这是因为Swift中private修饰符的含义和传统面向对象中的不太一样,在Swift中private只是限制在同一个文件中的可见性.所以要想它真正发挥作用,你必须在外部文件中才能体会到:

class ViewController: UIViewController {

func test(){

let day = Day()
//day.rawValue = 99 Error!!!
day.showRawValue()
day.forwardRawValue()
day.showRawValue()
}
}


That’s OK! ;]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: