gpt4 book ai didi

xcode - 使用枚举的默认实现扩展协议(protocol)会导致 Xcode 崩溃

转载 作者:行者123 更新时间:2023-11-30 13:38:38 26 4
gpt4 key购买 nike

我一直在研究协议(protocol)扩展,并提出了一些我认为可能是错误的东西,或者可能是我的误解。

假设您有一些特殊的动物能力和动物协议(protocol):

enum Ability {
case Flying
case Running
case Swimming
case Hiding
}

//All animals will conform to this
protocol Animal {
var name: String { get }
var specialAbility: Ability { get }
}

所以你定义了你的动物结构:

struct Dog: Animal {
var name: String
var specialAbility: Ability
}

但是每次你想要一只狗时,你都需要定义一种能力:

let rex = Dog.init(name: "Rex", specialAbility: .Flying)

那么您需要 specialAbility 的默认实现:

extension Animal where Self: Dog {
var specialAbility: Ability { return .Running }
}

但是 Xcode 崩溃了。它提示“与 Playground 服务的通信意外中断。”

最佳答案

问题出在尝试扩展 Animal where Self: Dog 时。 Dog 是一个结构体,而不是一个协议(protocol),因此 where 不起作用。

关于xcode - 使用枚举的默认实现扩展协议(protocol)会导致 Xcode 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35821778/

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