【问题标题】:Protocol Extension default variable implementation throws segmentation fault 11协议扩展默认变量实现抛出分段错误 11
【发布时间】:2016-03-21 11:00:40
【问题描述】:

我想使用变量的默认实现来创建协议扩展。这个简单的代码会引发分段错误 11,它也会在操场上崩溃。 删除“set”关键字时它工作正常,但是我不能简单地将值设置为实现此协议的类中的“test”变量 有什么建议吗?

import UIKit

protocol Prot {
    var test: Int { get set }
}

extension Prot {
    var test: Int {
        return 1
    }
}

struct TestStruct: Prot {

}

【问题讨论】:

    标签: swift


    【解决方案1】:

    如果您遇到分段错误,那肯定是 Swift 编译器错误。 即使这样有效,这段代码仍然不应该编译。

    原因是你的扩展为test定义了一个默认的get,但是TestStruct没有一个set,所以它还不符合Prot。 如果该错误不存在,您将收到类似于 TestStruct doesn't conform to protocol Prot 的错误消息

    p.s.:考虑将错误发送到 bugs.swift.org,因为这是一个非常简单的示例,我们将不胜感激

    【讨论】:

    • 谢谢,现在可以添加 set。我要把这个 bug 提交给 Swift 项目
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多