我们在代码中有一个名为 "single " 的结构体,如下所示:
除了调用者仍然可以使用以下方法初始化另一个Foo实例外,它的工作很好:
struct Foo {
let bar: String
static let sharedInstance = Foo(bar: "blah")
}
除了调用者仍然可以使用以下方法初始化另一个Foo实例外,它的工作很好:
let foo = Foo.init(bar: "blah")
有没有办法使生成的初始化器变为私有?
我们尝试了像这样明确定义初始化器:
struct Foo {
let bar: String
static let sharedInstance = Foo(bar: "blah")
private init(bar: String) {
self.bar = bar
}
}
代码可行,但每次添加/更改属性时都必须修改初始化器,有点烦人。我喜欢初始化器自动生成的方式,不必写这些样板代码。这种方式可行吗?
private init()
,并为所有属性赋初始值:let bar = "blah"
... - Martin R