PlayCard继承自Card
给定两个具有相同名称的函数:
func match(othercards : [PlayingCard]) -> Int {
return 2
}
func match(othercards : [Card]) -> Int {
return 2
}
它抛出错误说:具有选择器'match:'的重写方法具有不兼容的类型'([[PlayingCard])-> Int'
为什么???它的两个函数具有相同的名称,但具有两种不同的参数,为什么仍然要求覆盖?如果我这样做,那甚至被称为错误
最佳答案
由于PlaingCard继承自Card,因此您不能以这种方式覆盖该方法。
考虑一下,如果您尝试与PlayingCard实例进行匹配将发生什么情况。它会调用两种方法中的哪一种?这将是模棱两可的,因此是不允许的。
在这种情况下,一种解决方案是更改采用更特定类型的方法的名称。例如
func matchPlayingCard(othercards : [PlayingCard]) -> Int {
return 2
}