泛型 – 如何在Swift中使用泛型继承另一个类?
发布时间:2020-12-14 05:41:12 所属栏目:百科 来源:网络整理
导读:我的协议和类是: protocol Named {}class AT: Named {} 现在我想从P创建一个类内容: class B: A {} 但编译错误占用,它说: 对泛型类型’A’的引用需要 ...中的参数. 请告诉我如何用泛型子类另一个类,谢谢! 当我看到你的代码时,它似乎完全没问题,但我不知
我的协议和类是:
protocol Named { } class A<T: Named> { } 现在我想从P创建一个类内容: class B: A { } 但编译错误占用,它说: 对泛型类型’A’的引用需要< ...>中的参数. 请告诉我如何用泛型子类另一个类,谢谢!
当我看到你的代码时,它似乎完全没问题,但我不知道你在课程中做了什么.这是一个简单的例子.
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()时传递显式泛型类型.这是我自己的实验.可以有简单而简洁的方法来做到这一点. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |