struct中的lazy属性

时间:2015-08-05 15:10:59

标签: swift swift2

我试图实现一个简单的惰性对象类型:

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

...但它看起来更像是运行时错误。

评论最后一行可以解决问题。

任何想法可能在这里出错?

0 个答案:

没有答案