为什么针对泛型函数参数的类型分析镜像子项不会产生零结果?

时间:2018-07-16 21:57:07

标签: swift generics types

在下面的示例中,classInstancestructInstance均为nil。为什么要这样?

let reflector = Reflector()
let classInstance = reflector.get(thing: MyClass.self)
let structInstance = reflector.get(thing: MyStruct.self)

class MyClass {}
struct MyStruct {}

class Reflector {
    let mc: MyClass
    let ms: MyStruct

    init() {
        mc = MyClass()
        ms = MyStruct()
    }

    func get<T>(thing: T) -> T? {
        let mirror = Mirror(reflecting: self)
        for (_, child) in mirror.children.enumerated() {
            if let t = child.value as? T {
                return t
            }
        }
        return nil
    }
}

0 个答案:

没有答案