У меня есть простая иерархия классов, подобная этой в 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()
неоднозначно. Почему это? Разве нет способа получить класс fun c, который уточняет в подклассе для подтипа и сохраняет их однозначными?