gpt4 book ai didi

Swift 构建的协议(protocol)无法按预期工作

转载 作者:搜寻专家 更新时间:2023-11-01 06:41:39 25 4
gpt4 key购买 nike

遵循 playground-ready 代码 ;)

protocol Prot {
static func instanceArray() -> [Self]
}

struct A {
init() {
// Do something
}
}

extension A: Prot {
static func instanceArray() -> [A] {
return [A(), A()]
}
}

func work() -> [Prot] {
return A.instanceArray()
}

编译器将在return A.instanceArray()处抛出错误:无法将类型 [A] 的返回表达式转换为返回类型 [Prot]

为什么编译器不能转换这些类型,即使 A 实现了协议(protocol) Prot?我知道一个解决方法是将 instanceArray() 的返回类型更改为 [Prot] 但我不太喜欢这个解决方案。这是编译器错误还是功能?

最佳答案

如果必须的话,有办法绕过它

func work() -> [Prot] {
return A.instanceArray().map{ $0 as Prot }
}

关于Swift 构建的协议(protocol)无法按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34457202/

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