gpt4 book ai didi

专门化泛型协议(protocol)的 Swift 协议(protocol)

转载 作者:行者123 更新时间:2023-11-28 12:16:50 25 4
gpt4 key购买 nike

有没有可能有一个专门针对通用协议(protocol)的协议(protocol)?我想要这样的东西:

protocol Protocol: RawRepresentable {
typealias RawValue = Int
...
}

这确实可以编译,但是当我尝试从 Protocol 实例访问 initrawValue 时,它的类型是 RawValue 而不是 Int.

最佳答案

在 Swift 4 中,您可以为协议(protocol)添加约束:

protocol MyProtocol: RawRepresentable where RawValue == Int {
}

现在所有在 MyProtocol 上定义的方法都将有一个 Int rawValue。例如:

extension MyProtocol {
var asInt: Int {
return rawValue
}
}

enum Number: Int, MyProtocol {
case zero
case one
case two
}

print(Number.one.asInt)
// prints 1

采用 RawRepresentable 但 RawValue 不是 Int 的类型不能采用你的约束协议(protocol):

enum Names: String {
case arthur
case barbara
case craig
}

// Compiler error
extension Names : MyProtocol { }

关于专门化泛型协议(protocol)的 Swift 协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46224234/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com