gpt4 book ai didi

Swift - 指定符合泛型类型参数的协议(protocol)

转载 作者:行者123 更新时间:2023-12-05 08:11:17 25 4
gpt4 key购买 nike

我想做的是有两个通用类型参数,其中一个是特定类型,另一个是协议(protocol),如下所示:

@propertyWrapper
struct Implementation<T, P> where T : AnyObject, T : P { // Compiler error

var wrappedValue: P { projectedValue }

var projectedValue: T

init(_ instance: T) {
self.projectedValue = instance
}

}

这样,可以隐藏实际类型,只暴露协议(protocol)。

现在这行不通了,因为 P 是非类、非协议(protocol)类型,所以不能将 T 约束到它。

有解决办法吗?

最佳答案

我认为你可以为 T 创建一个继承自的协议(protocol),然后你根本不需要 P:

protocol ImplementationProtocol: AnyObject {}

@propertyWrapper
struct Implementation<T: ImplementationProtocol> {

var wrappedValue: ImplementationProtocol { projectedValue }

var projectedValue: T

init(_ instance: T) {
self.projectedValue = instance
}

}

现在您的“T”必须符合“ImplementationProtocol”,“wrappedValue”也必须符合您在上面的代码中尝试完成的“ImplementationProtocol”。

希望对你有帮助

关于Swift - 指定符合泛型类型参数的协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61355193/

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