我的协议和类是:
protocol Named {
}
class A<T: Named> {
}
现在,我想从P创建一个类内在函数:
class B: A {
}
但是编译错误占据了它,它说:
Reference to generic type 'A' requires arguments in <...>
请告诉我如何使用泛型继承另一个类,谢谢!
当我看到您的代码时,看起来似乎很好,但是我不知道您在这些类中一直在做什么。这是一个简单的例子。
protocol Named{
var firstName:String {get set}
var lastName: String {get set}
var fullName: String{ get }
}
class Person: Named{
var firstName: String
var lastName: String
var fullName: String{
return "\(firstName) \(lastName)"
}
init(firstName: String, lastName: String){
self.firstName = firstName
self.lastName = lastName
}
}
class A<T: Named>{
var named: T
init(named: T){
self.named = named
}
}
class B<M: Named>: A<M>{
init(){
let person = Person(firstName: "John", lastName: "Appleseed")
person.fullName
super.init(named: person as M)
}
}
let b = B<Person>()
b.named.fullName
请注意,当从通用类继承子类时,还必须将子类也作为通用类,并且超类必须传递与子类中使用的相同的通用变量。似乎也需要显式类型转换来表示泛型(在本例中为协议),请参见类B中的初始化器。初始化子类还需要在初始化为B()时传递显式泛型类型。这是我自己的实验。可能有简单而简洁的方法来执行此操作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句