Ich bin neu zu schnell und ein Tutorial folgen, um mehr zu erfahren.Fehler: nicht konform mit dem Protokoll 'Equatable'
Im folgenden Code habe ich benutzerdefinierte Operatoren definiert (< und ==) und der Code funktioniert aber gut, aber xcode zeigt diese Fehler in der ersten Zeile des Codes.
Type 'SuitedCard' does not conform to protocol 'Equatable'
Type 'SuitedCard' does not conform to protocol 'Comparable'
hier ist der Code:
struct SuitedCard: Equatable, Comparable {
// a card can be ♥️, ♣️, ♦️, ♠️
enum Suit {
case hearts
case spades
case diamonds
case clubs
}
// the possible values of a card
enum Value: Int {
case two = 2
case three = 3
case four = 4
case five = 5
case six = 6
case seven = 7
case eight = 8
case nine = 9
case ten = 10
case jack = 11
case queen = 12
case king = 13
case ace = 14
}
// properties
let suit: Suit
let value: Value
var isFaceDown: Bool
}
var valueArray: [SuitedCard.Value] = [.ten, .jack, .queen, .king]
func ==(lhs: SuitedCard, rhs: SuitedCard) -> Bool {
for cardValue in valueArray {
if lhs.value == cardValue {
for cardValue2 in valueArray {
if rhs.value == cardValue2 {
return true
}
}
}
}
if lhs.value == rhs.value {
return true
}
return false
}
func <(lhs: SuitedCard, rhs: SuitedCard) -> Bool {
var lhsRawValue: Int
var rhsRawValue: Int
if lhs.value == .jack || lhs.value == .queen || lhs.value == .king {
lhsRawValue = 10
} else {
lhsRawValue = lhs.value.rawValue
}
if rhs.value == .jack || rhs.value == .queen || rhs.value == .king {
rhsRawValue = 10
} else {
rhsRawValue = rhs.value.rawValue
}
return lhsRawValue < rhsRawValue
}
let smaller = SuitedCard(suit: .hearts, value: .five, isFaceDown: true)
let bigger = SuitedCard(suit: .diamonds, value: .six, isFaceDown: false)
smaller >= smaller
smaller < bigger
Was ist los?