gpt4 book ai didi

ios - 无法将类型 '[SomeStruct]' 的值转换为指定类型 '[SomeProtocol]'

转载 作者:可可西里 更新时间:2023-11-01 02:16:55 25 4
gpt4 key购买 nike

这里有一些设置代码来解释正在发生的事情:

protocol CanJump{
func jump()
}

struct Dog: CanJump{
func jump(){
print("yay jump")
}
}

struct Cat: CanJump{
func jump(){
print("nothx")
}
}

let d = [Dog()]
let c = Cat()

这不起作用:

let thingsThatCanJump: [CanJump] = d 

Cannot convert value of type [Dog] to specified type [CanJump]

这确实有效:

let thingsThatCanJump: [CanJump] = [c]

我想到的一个令人作呕的解决方法是:

let thingsThatCanJump: [CanJump] = d.map({$0 as CanJump})

谁能解释为什么会这样?

我猜这与编译器没有完全评估类型和一致性有关。

最佳答案

这是因为您 let d 实际上是 [Dog] 的类型,而 swift 对类型安全非常严格。

要解决此问题,您可以执行以下操作:

let d: [CanJump] = [Dog()]

希望对你有帮助

关于ios - 无法将类型 '[SomeStruct]' 的值转换为指定类型 '[SomeProtocol]',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37205631/

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