[Pa-6ren">
gpt4 book ai didi

swift - 继承类中的类 func() 存在奇怪的歧义 [Swift]

转载 作者:行者123 更新时间:2023-11-30 10:25:22 25 4
gpt4 key购买 nike

我在 Swift 中有一个像这样的简单类层次结构。

class Parent {
var name:String = "Unnamed"
class func all() -> [Parent] {
return Dad.all() + Mom.all()
}
}

class Dad:Parent {
static var AllDads:[Dad] = []

class func all() -> [Dad] {
return AllDads
}
}

class Mom:Parent {
static var AllMoms:[Mom] = []

class func all() -> [Mom] {
return AllMoms
}
}

Mom.all().forEach { mom in
print(mom.name)
}

如果我把它放在工作区中,一切都会很好,直到我点击运行按钮。此时它告诉我最后一个表达式 Mom.all() 是不明确的。为什么是这样?有没有办法让类函数在子类型的子类中进行细化,并保持它们明确?

最佳答案

原因是 Parent 上的 allMom 上的 all 具有不同的签名。因此,Mom 上的 all 不能覆盖 Parent 上的 all(编译器不需要 >覆盖关键字)。这意味着 Mom 类型上存在两个名为 all 的类函数。此外,传递给 forEach 的闭包没有指定参数类型,因此无法确定引用了两个函数中的哪一个。为 forEach 中的 mom 参数分配类型将解决此问题。

关于swift - 继承类中的类 func() 存在奇怪的歧义 [Swift],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60086737/

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