我试图实现一个简单的惰性对象类型:
struct LazyType<T> {
typealias Instantiator = () -> T
private let instantiator: Instantiator
private lazy var object: T = {
return self.instantiator()
}()
init(_ instantiator: Instantiator) {
self.instantiator = instantiator
}
var lazyObject: T {
mutating get {
return object
}
}
}
class SomeClass {
let urlPath: String
init(urlPath: String) {
self.urlPath = urlPath
}
}
private var someLazyVar = LazyType<SomeClass>() {
let myGithubRepositoryUrl = "someone.github.io"
print(myGithubRepositoryUrl)
return SomeClass(urlPath: myGithubRepositoryUrl)
}
private let someClassVar = someLazyVar.lazyObject
并得到一些奇怪的编译时错误:
命令无法发出信号:中止陷阱:6
...但它看起来更像是运行时错误。
评论最后一行可以解决问题。
任何想法可能在这里出错?