gpt4 book ai didi

ios - 方法参数需要类型和协议(protocol)

转载 作者:IT王子 更新时间:2023-10-29 05:06:44 26 4
gpt4 key购买 nike

我正在使用 Swift 并遇到以下问题:假设我有预定义的类 Animal:

//Predefined classes
class Animal {
var height: Float = 0.0
}

我现在用接受动物的构造函数编写类 Zoo。但是 Zoo 希望每只动物都有一个名字,因此定义了 Namable 协议(protocol)。

protocol Namable {
var name: String {get}
}

class Zoo {
var animals: Animal[] = [];
}

您将如何编写一个 addAnimal 方法,要求作为参数传递的对象是type Animalconform到协议(protocol) Namable?您如何为 animals 数组声明它?

    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 - 方法参数需要类型和协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24231498/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com