gpt4 book ai didi

ios - 如何使用 CustomStringConvertible 和 RawRepresentable 组合类型指定函数参数的类型?

转载 作者:行者123 更新时间:2023-12-01 19:33:53 24 4
gpt4 key购买 nike

我想要一个可以实例化几个不同对象的通用函数enum我通过提供枚举类型和 Int原始值(value)。这些enum s 也是 CustomStringConvertible .

我试过这个:

func myFunc(type: CustomStringConvertible.Type & RawRepresentable.Type, rawValue: Int)

这导致3个错误:
  • 非协议(protocol)、非类类型“CustomStringConvertible.Type”不能在协议(protocol)约束类型中使用
  • 非协议(protocol)、非类类型“RawRepresentable.Type”不能在协议(protocol)约束类型中使用
  • 协议(protocol)“RawRepresentable”只能用作通用约束,因为它具有 Self 或关联类型要求

  • 现在忘记'CustomStringConvertible',我也试过:
    private func myFunc<T: RawRepresentable>(rawValue: Int, skipList: [T]) {
    let thing = T.init(rawValue: rawValue)
    }

    但是,尽管代码完成提示了它,但会导致关于 T.init(rawValue:) 的错误。 :
  • 无法使用“(rawValue: Int)”类型的参数列表调用“init”

  • 我怎样才能形成这样的工作通用功能?

    最佳答案

    问题是 T.RawValue可以是 Int 以外的其他内容使用您当前的类型约束。您需要指定 T.RawValue == Int为了通过您的rawValue: Int init(rawValue:) 的输入参数.

    func myFunc<T: RawRepresentable & CustomStringConvertible>(rawValue: Int, skipList: [T]) where T.RawValue == Int {
    let thing = T.init(rawValue: rawValue)
    }

    关于ios - 如何使用 CustomStringConvertible 和 RawRepresentable 组合类型指定函数参数的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60884057/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com