如何将协议限制为值类型?

vop*_*lif 13 swift swift2

此问题的精神相似,除了不仅仅将类限制为类,我希望能够定义一个只能由枚举,结构等采用的协议.这可能吗?

Chr*_*ris 6

我找不到答案,但通过游戏,我得出的结论是,你做不到.为了将协议限制为只是类,你在它之前使用classlike

protocol SomeProto: class {
    func structYourStuff() -> Void
}
Run Code Online (Sandbox Code Playgroud)

我试过假设这在其他类型中是一致的

protocol SomeProto: struct {
    func structYourStuff() -> Void
}
Run Code Online (Sandbox Code Playgroud)

但Xcode在一行上给了我五个不同的错误,这让我得出结论你不能.我可能完全错了,一周前我才开始学习Swift

  • 确切地说,我们不能这样做.恕我直言,这将是一种有用的语言扩展. (2认同)