从协议扩展实例方法中读取静态var

时间:2015-12-15 19:52:32

标签: swift swift-protocols

假设我们有一个Swift协议:

protocol SomeProtocol: class {
    static var someString: String { get }
}

有没有办法从扩展实例方法访问someString,如此?

extension SomeProtocol {
    public func doSomething() -> String {
        return "I'm a \(someString)"
    }
}

我收到编译错误:

  

静态成员'someString'不能用于'Self'类型的实例

有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:6)

您需要someString引用Self注意大写S ):

extension SomeProtocol {
    public func doSomething() -> String {
        return "I'm a \(Self.someString)"
    }
}