代码之家  ›  专栏  ›  技术社区  ›  Frankenstein

“equatable”的实现不能在扩展中自动合成

  •  -3
  • Frankenstein  · 技术社区  · 6 年前

    我在向扩展添加新的协议一致性时遇到编译器错误。

    struct EquatableStruct {...}
    
    extension EquatableStruct: Equatable {
      static func == (lhs: EquatableStruct, rhs: EquatableStruct) -> Bool {
        return true
      }
    }
    

    这里我得到这个编译器错误。 Implementation of 'Equatable' cannot be automatically synthesized in an extension

    1 回复  |  直到 6 年前
        1
  •  1
  •   rmaddy    6 年前

    你引用错了。应该是:

    “equatable”的实现不能在扩展中自动合成

    Comparable 延伸 Equatable . 如果你希望你的扩展符合 可比的 您还必须执行 可等值的 协议。

    extension ComparableStruct: Comparable {
        static func < (lhs: ComparableStruct, rhs: ComparableStruct) -> Bool {
            return true // FIX
        }
    
        static func == (lhs: ComparableStruct, rhs: ComparableStruct) -> Bool {
            return true // FIX
        }
    }