我想使用变量的默认实现创建协议(protocol)扩展。这个简单的代码会抛出段错误 11,它也会在 Playground 中崩溃。 当删除“set”关键字时它工作正常,但是我不能简单地将值设置为实现此协议(protocol)的类中的“test”变量 有什么建议吗?
import UIKit
protocol Prot {
var test: Int { get set }
}
extension Prot {
var test: Int {
return 1
}
}
struct TestStruct: Prot {
}
最佳答案
如果出现段错误,那么这肯定是 Swift 编译器错误。 即使这样有效,这段代码仍然不能编译。
原因是您的扩展为 test
定义了默认的 get
,但 TestStruct
没有 set
,所以它还不符合 Prot
。
如果不存在该错误,您将收到一条错误消息,内容类似于 TestStruct 不符合协议(protocol) Prot
p.s.:考虑将错误发送到 bugs.swift.org,因为这是一个非常小的示例,我们将不胜感激
关于swift - 协议(protocol)扩展默认变量实现抛出段错误 11,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36129261/