我有一个静态函数,我想调用符合协议的类。
protocol P {
static func f();
}
class C: P {
static func f() {}
}
有没有办法将C.self
存储为具有符合协议类型的变量?下面没有编译,但这是我理想的尝试:
let a: AnyClass<P> = C.self;
a.f();
答案 0 :(得分:3)
您尝试使用C.self
存储的对象类型为C.Type
。
类型C
符合协议P
如果您希望通过确保对象符合P
来存储对象,请使用P.Type
作为类型。
示例:
let myObject: P.Type = C.self;
myObject.f();