作者:Natasha The Robot 原文链接
在我的这篇 Constructor Injection blog中,我写了一个结构体的例子,它有一个属性,属性可以从外部读取,但是写权限只能在内部,之前的代码看起来是这样的:
struct Counter {
// `count` here has to be a var
// but I never want to set the `count` externally,
// so I made it private
private var count: Int
// so this is the only way to access the count externally
func getCount() {
return count
}
}
这个写法我不是很满意,但是当时这是我能想到的唯一方式来这样来做。幸运的是,有一个更好的方法!
@mipstian 告诉我,可以只指定写权限为私有,像这样:
struct Counter {
// I specify that only the setter is private!
private(set) var count: Int
}
在我的例子模块中,Counter结构体是“public”(其实是internal),这样读取就没问题了。如果你需要写SDK,你可以显示的指定 getter
是公开的,setter
是私有的,像这样:
public struct Counter {
// I specify that only the setter is private!
public private(set) var count: Int
}
不知道我怎么错过了这个写法(我想这是因为我倾向于尽可能的使用let),但是很高兴在swift中找到这么优雅的方式,我甚至还不知道这样的方式。
Zephan: 尝试的第二篇翻译,水平有限,只能翻译比较短的,还要加油啊!