gpt4 book ai didi

ios - 在数组中搜索提供类型的对象

转载 作者:可可西里 更新时间:2023-11-01 00:53:22 24 4
gpt4 key购买 nike

我有一系列的动物。我想在其中搜索某个子类类型。 Animals 数组将只包含每个子类类型之一。我尝试了以下方法,但不起作用。我收到编译错误,指出:“animalType 不是类型”。

public static func getAnimal<T: Animal>(animalType: T.type) -> Animal {
for animal in self.animals {
if animal is animalType {
return animal
}
}
}

这在 Swift 中可能吗?

我想这样调用它......

AnimalServices.getAnimal(Dog)

最佳答案

这是一个简化的示例,请注意我返回了一个可选的 Animal,因为搜索可能会失败(编译器不知道您将始终只有一种该类型的动物):

class Animal {
let name: String

init(name: String) {
self.name = name
}
}

class Cat: Animal {
init() {
super.init(name: "Cat")
}
}

class Dog: Animal {
init() {
super.init(name: "Dog")
}
}

struct Zoo {
static var animals: [Animal] = []

static func getAnimal<T: Animal>(animalType: T.Type) -> Animal? {
for animal in animals {
if animal is T {
return animal
}
}
return nil
}
}

Zoo.animals.append(Cat())

Zoo.getAnimal(Cat) // Returns the cat as optional
Zoo.getAnimal(Dog)

简单地说,T 是您的通用类型。 T.Type 声明您正在传递 T 类型作为参数。

关于ios - 在数组中搜索提供类型的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28816905/

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