//Predefined classesclass Animal { var height: float = 0.0}
我现在用类似动物的构造函数编写动物园。但动物园希望每个动物都有一个名字,因此定义了Namable协议。
protocol Namable { var name: String {get}}class Zoo { var animals: Animal[] = [];}
您将如何编写一个addAnimal方法,该方法需要将对象作为参数传递为Animal类型并符合协议Namable?而且你如何声明为动物阵列?
func addAnimal:(animal: ????) { ... }
在Objective-C中,我会写这样的东西
- (voID)addAnimal:(Animal<Namable>*)animal {...}解决方法 您可以使用一个带有多个条件的where子句的泛型。
func addAnimal<T: Animal where T: nameable>(animal: T) { ... }
修改:你应该把整个类都变成泛型,以便正确地键入数组
class Zoo<T: Animal where T: nameable> { var animals : T[] = [] func addAnimal(a: T) { ... }}总结
以上是内存溢出为你收集整理的ios – 需要方法参数的类型和协议全部内容,希望文章能够帮你解决ios – 需要方法参数的类型和协议所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)