我很确定这只适用于课程,但不确定是否可以使用结构执行以下操作:
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
}
}
我希望结构调用来自foo()
和Pro2
Pro3
来电
答案 0 :(得分:1)
目前不是,因为
Aye#foo
,因为有多个具有相同签名的默认实现。self.foo
而不会导致无限递归。我说“不是”,因为我不确定这种行为是否符合设计要求。正如你所说,这对课程来说没有问题。
(我有另一个答案,这是偏离基础的。感谢@appzYourLife纠正它。)