我需要检查对象是否不是某个类型。我知道在Kotlin中,可以通过使用!is
来检查类型是否为非类型。我想知道Swift中是否有类似的解决方案,或者如果不可能的话,我可以使用的变通方法?
Kotlin中的示例:
假设动物是不同动物的接口,并且有实现它的类,如Cat
、Dog
、Horse
、Spider
等:
var animals = listOf<Animals>(Horse(), Cat(), Dog(), Spider())
var chosenAnimals = animals.filter { it !is Spider }
发布于 2019-02-16 21:16:46
使用swift语法,这是实现这一点的一种方法
let animals: [Animals] = [Horse(), Cat(), Dog(), Spider()]
var chosenAnimals = animals.filter { type(of: $0) != Spider.self }
或者
var chosenAnimals = animals.filter { !($0 is Spider) }
发布于 2019-02-16 21:51:01
或者,您可以创建自己的isNot函数,如下所示:
extension Animal {
func isNot<T: Animal>(_ type: T.Type) -> Bool {
return !(self is T)
}
}
print(Horse().isNot(Fish.self)) // prints true
print(Horse().isNot(Horse.self)) // prints false
发布于 2019-02-16 21:10:28
您可以使用以下命令:
var chosenAnimals = animals.filter({!($0 is Spider)})
https://stackoverflow.com/questions/54727631
复制相似问题