加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

swift lazy var with throw init behavior

发布时间:2020-12-14 05:28:39 所属栏目:百科 来源:网络整理
导读:我不确定它是不是一个错误,或者它确实是如何工作的? class A { init() throws { }}class B { lazy var instance = A()} 这段代码使用XCode 9和最新的Swift版本编译时没有错误,除非Class A init()真正抛出,否则lazy var是空指针.但不应该以某种方式编译这段
我不确定它是不是一个错误,或者它确实是如何工作的?
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).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读