返回符合swift协议的类(实际类,而不是它的实例)

返回符合swift协议的类(实际类,而不是它的实例),swift,protocols,swift-protocols,Swift,Protocols,Swift Protocols,我很难返回一个类,而不是一个符合协议的实例。这是可能做到的吗?下面是我的代码的近似值: public protocol MyProt { //things } var protConformer: MyProt { return boolVar ? ClassOne : ClassTwo // where both classes conform to MyProt } 当然,这里有一个错误是无法将“ClassOne.type”类型的返回表达式转换为返回类型“MyProt”。

我很难返回一个类,而不是一个符合协议的实例。这是可能做到的吗?下面是我的代码的近似值:

public protocol MyProt {
    //things
}

var protConformer: MyProt {
    return boolVar ? ClassOne : ClassTwo // where both classes conform to MyProt
}

当然,这里有一个错误是
无法将“ClassOne.type”类型的返回表达式转换为返回类型“MyProt”
。关于这是否可能有什么想法?

如果要返回符合协议的类型而不是此类类型的实例,则需要将
protcommer
的类型更改为协议的元类型,即
MyProt.type

var protConformer: MyProt.Type {
    return boolVar ? ClassOne.self : ClassTwo.self
}

如果要返回符合协议的类型而不是此类类型的实例,则需要将
protcommer
的类型更改为协议的元类型,即
MyProt.type

var protConformer: MyProt.Type {
    return boolVar ? ClassOne.self : ClassTwo.self
}
类型MyProt表示“采用MyProt的类型的实例”。如果您真的想操作元类型,语法是:

var protConformer: MyProt.Type {
    return boolVar ? ClassOne.self : ClassTwo.self
}
但我必须警告你,这几乎从来都不是正确的做法。您可能在这里寻找泛型(无论您的实际问题是什么)。

类型MyProt的意思是“采用MyProt的类型的实例”。如果您真的想操纵元类型,语法是:

var protConformer: MyProt.Type {
    return boolVar ? ClassOne.self : ClassTwo.self
}
但我必须警告你,这几乎从来都不是正确的做法。你可能在这里寻找一种通用的方法(不管你的现实问题是什么)