ios – 需要方法参数的类型和协议

ios – 需要方法参数的类型和协议,第1张

概述我正在和Swift一起玩耍,并且绊倒了以下问题:给定了我有预定义的类Animal: //Predefined classesclass Animal { var height: Float = 0.0} 我现在用类似动物的构造函数编写动物园。但动物园希望每个动物都有一个名字,因此定义了Namable协议。 protocol Namable { var name: String 我正在和Swift一起玩耍,并且绊倒了以下问题:给定了我有预定义的类Animal:

//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 – 需要方法参数的类型和协议所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1040864.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存