enum
我想要一个通用函数,它可以通过提供枚举类型和Int
原始值来实例化我拥有的几种不同类型的对象。这些enum
s 也是CustomStringConvertible
.
我试过这个:
func myFunc(type: CustomStringConvertible.Type & RawRepresentable.Type, rawValue: Int)
这导致3个错误:
- 非协议、非类类型“CustomStringConvertible.Type”不能在协议约束类型中使用
- 非协议、非类类型“RawRepresentable.Type”不能在协议约束类型中使用
- 协议“RawRepresentable”只能用作通用约束,因为它具有 Self 或关联的类型要求
现在忘记'CustomStringConvertible',我也试过:
private func myFunc<T: RawRepresentable>(rawValue: Int, skipList: [T]) {
let thing = T.init(rawValue: rawValue)
}
但是,尽管代码完成表明了这一点,但会导致有关以下内容的错误T.init(rawValue:)
:
- 无法使用类型为“(rawValue:Int)”的参数列表调用“init”
我怎样才能形成这样的工作通用功能?