静态上下文中Self类型的变量

时间:2017-11-13 18:36:55

标签: swift

我必须使用返回类型static修改现有的Self方法。 我正在使用Self,因为它也需要用于A的子类。由于修改可能需要调度同步块来为返回者创建数据,因此我必须引入类型为Self的局部变量。

错误:

  

'自'仅在协议中或作为类中方法的结果;

class A {
    //...
}

class B:A {
    //...
}

extension A {
   static private func foo() -> Self {
        var myVar: Self? //Error: 'Self' is only available in a protocol or as the result of a method in a class;
        // Get data for myVar, potentially in a dispatch sync block on another queue
        guard let safeVar = myVar else {
        return someGarbagr
        }

        return myVar
    }
}

预期用途:

func someFunctionSomewhere() {
    let instanceOfB = B.foo()
    // use instanceOfB
}

我已经尝试过所有我能想到的:

type(of:Self)
Self.Type
...

我想避免将其修改为通用方法,原因有几个。主要原因是我们必须明确提到类型以使泛型版能够引用返回类型:

let instanceOfB: B = B.foo()

0 个答案:

没有答案