无法使用.swift类型访问值

时间:2019-10-11 22:16:48

标签: swift generics swift4

为什么我不能在下面的代码中从类型B分配和读取值? B.self应该作为类型而不是实例传递,因此它应该在class B中访问静态var吗?

class A{

}

class B:A{
   static var a = 5
}

class c{
     static func a(){
        b(type: B.self)

    }
    static func b(type:B.Type){
        print(type.a)
    }

    func takeObject<T>(type:T.Type){


        print(type(of:String.self)) // String.Type
        print(type) // B
        print(type.a) // Value of type 'T' has no member 'a'
        var a :type // Use of undeclared type 'type'

    }

}
let objects : c = c()
objects.takeObject(object: B.self)

请纠正我,我是这个主题的新手,似乎很有趣。

1 个答案:

答案 0 :(得分:0)

我认为您只想添加类型B的对象,因此可以如下指定类型T的通用B

class A {}

class B: A {
    static var a = 5
}

class c {
    static func a() {
        b(type: B.self)

    }
    static func b(type: B.Type){
        print(type.a)
    }

    func takeObject<T: B>(type: T.Type){
        print(type)
        print(type.a)
        var a : T
    }
}

let objects : c = c()
objects.takeObject(type: B.self)