Swift:比较扑克牌-无法应用二进制比较

时间:2018-09-20 10:39:57

标签: swift comparison-operators

我在Swift操场上有以下代码,其中创建了ProductsContext结构。

我需要比较卡,看哪个值更高。

理想情况下,我还需要检查所有形式的二进制操作Card

但是,我不断收到一条错误消息:

<, >, <=, >=, etc

进一步的消息指出:

  

注意:这些部分匹配的参数存在'>'的重载   列出:((),()),(UInt8,UInt8),(Int8,Int8),(UInt16,UInt16),   (Int16,Int16),(UInt32,UInt32),(Int32,Int32),(UInt64,UInt64),   (Int64,Int64),(UInt,UInt),(Int,Int),(UIContentSizeCategory,   UIContentSizeCategory),(日期,日期),(IndexPath,IndexPath),   (IndexSet.Index,IndexSet.Index),((A,B),(A,B)),((A,B,C),(A,B,   C)),(((A,B,C,D),(A,B,C,D,E)),((A,B,C,D,E),(A,B,C,D,E) ),   (((A,B,C,D,E,F),(A,B,C,D,E,F)),(Self,Other),(Self,R)如果   (王牌>王){

error: binary operator '>' cannot be applied to two 'Card' operands if (ace > king) {
    ~~~ ^ ~~~~

我想知道我出了什么问题。

1 个答案:

答案 0 :(得分:1)

您需要遵守Comparable协议才能使用比较运算符(<>)。

extension Card: Comparable {
    static func < (lhs: Card, rhs: Card) -> Bool {
        return lhs.rank.values.first < rhs.rank.values.first
    }
}