你能检查一个类型(不是一个实例)是否是另一个类型的子类吗?

根据这个代码..。

class Vehicle{}

class Car : Vehicle {}

class Honda : Car {}

你将如何编写下面的函数'findFirst‘...

class TypeManager {

    var managedTypes:[Any.Type]?

    func findFirst(_ type:Any.Type) -> Any.Type? {
        return managedTypes.first{ t in t is type.Type } // <-- Doesn't like 'type'
    }
}

var typeManager = TypeManager()
typeManager.managedTypes = [
    String.self,
    Int.self,
    Honda.self
]

let firstCarType = typeManager.findFirst(Car.Type)

注意:这实际上是在字典上进行反向关键字查找。在一个完美的解决方案中,我会首先尝试在'type‘上找到一个完全匹配的,如果找不到,就选择一个'type’的子类。我只是简化了(伪造的)代码,专注于匹配的部分。

转载请注明出处:http://www.tzjx69597577.net/article/20230526/1495461.html