【发布时间】:2016-01-04 06:19:51
【问题描述】:
代码如下:
class Test<T> {
func foo<S:SequenceType where S.Generator.Element == T>(par : S){
print("foo")
}
}
class TestInh : Test<Int> {
override func foo<S:SequenceType where S.Generator.Element == Int>(par : S) {
print("loo")
}
}
它会大喊这样的错误:
repl.swift:8:19: error: method does not override any method from its superclass
override func foo<S:SequenceType where S.Generator.Element == Int>(par : S) {
~~~~~~~~ ^
如何覆盖超类Test<Int> 中的方法?
===================补充========================
当涉及到代码攻击时。
class Test<T> {
func foo(par : T){
print("foo")
}
}
class TestInh : Test<Int> {
override func foo(par : Int) {
print("loo")
}
}
一切正常。不知道where 语句出现时发生了什么。
【问题讨论】:
-
有人说这两个函数签名是不同的。但底部代码编译!!!这真的让我很困惑。即使在指定 T 之后,他们的签名也应该被认为是不同的!
标签: swift generics overriding