swift lazy var with throw init behavior

前端之家收集整理的这篇文章主要介绍了swift lazy var with throw init behavior前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我不确定它是不是一个错误,或者它确实是如何工作的?
class A {
    init() throws { }
}

class B {
    lazy var instance = A()
}

这段代码使用XCode 9和最新的Swift版本编译时没有错误,除非Class A init()真正抛出,否则lazy var是空指针.但不应该以某种方式编译这段代码

这确实是一个错误( SR-7862) – 你不能从属性初始化上下文中抛出错误(即使你可以,你也需要使用try来为调用添加前缀),因此编译器应该产生错误.

我已经打开了拉动请求来解决这个问题(#17022).

编辑:补丁现在已被挑选到4.2分支,所以它将被修复为使用Xcode 10发布Swift 4.2(直到发布你可以try a 4.2 snapshot).

猜你在找的Swift相关文章