gpt4 book ai didi

swift - 1 个结构、3 个协议(protocol)和 1 个函数来调用它们

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

我很确定这只适用于类,但不确定是否可以使用结构执行以下操作:

protocol Pro {
var x: Int {get set}
mutating func foo()
}

protocol Pro2: Pro {
var y: Int {get set}
}

protocol Pro3: Pro {
var z: Int {get set}
}


extension Pro2 {
mutating func foo() {y *= 2}
}

extension Pro3 {
mutating func foo() {z += 2}
}


struct Aye: Pro2, Pro3 {
var x: Int = 0
var y: Int = 0
var z: Int = 0

mutating func foo() {
// call foo() from Pro2 and Pro3
}
}

我希望结构从 Pro2Pro3 调用 foo()

最佳答案

目前没有,因为

  • (您可能已经知道)您需要使用 something 实现 Aye#foo,因为有多个默认实现具有相同的签名。
  • 您不能在实现中调用 self.foo 而不会导致无限递归,无论您尝试多少转换。
  • 始终调用结构中的实现而不是默认实现,因此不可能在调用站点进行任何花哨的转换。

我说“目前没有”是因为我不确定这种行为是否是设计使然。正如您所说,这对类(class)来说没有问题。

(我有另一个答案,这太离谱了。感谢 @appzYourLife 更正它。)

关于swift - 1 个结构、3 个协议(protocol)和 1 个函数来调用它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38936963/

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