【问题标题】:Swift: AnyClass variable that conforms to protocolSwift:符合协议的 AnyClass 变量
【发布时间】:2016-03-14 21:06:10
【问题描述】:

我有一个静态函数,我想调用一个符合协议的类。

protocol P {
    static func f();
}

class C: P {
    static func f() {}
}

有没有办法将C.self 存储为符合协议类型的变量?下面没有编译,但这是我最理想的尝试:

let a: AnyClass<P> = C.self;
a.f();

【问题讨论】:

  • 为什么不能只使用协议作为类型? let a: P = C.self

标签: swift generics swift2


【解决方案1】:

您尝试使用C.self 存储的对象类型是C.Type

类型C符合协议P

如果您想通过确保对象符合P 来存储对象,请使用P.Type 作为类型。

例子:

let myObject: P.Type = C.self;
myObject.f();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 2021-02-04
    相关资源
    最近更新 更多