我在返回类而不是返回符合协议的实例方面遇到麻烦。那是可能的吗?这是我的代码的近似值:
public protocol MyProt {
//things
}
var protConformer: MyProt {
return boolVar ? ClassOne : ClassTwo // where both classes conform to MyProt
}
当然,我在这里遇到一个错误,说"Cannot convert return expression of type 'ClassOne.Type' to return type 'MyProt'
。关于这是否可能的任何想法?
答案 0 :(得分:3)
您需要将protConformer
的类型更改为协议的元类型,即MyProt.Type
,如果要返回符合协议的 type 而不是这种类型的实例。
var protConformer: MyProt.Type {
return boolVar ? ClassOne.self : ClassTwo.self
}
答案 1 :(得分:3)
类型MyProt表示“采用MyProt的类型的实例”。如果您真的想操纵元类型,则语法为:
var protConformer: MyProt.Type {
return boolVar ? ClassOne.self : ClassTwo.self
}
但是我必须警告您,这几乎从来都不是正确的选择。无论您遇到什么现实问题,您都可能在这里寻找通用名称。