Enum case 'case' не является членом типа 'Type' - PullRequest
0 голосов
/ 16 февраля 2020

Я - новичок в программировании и только начал изучать быстрое и iOS развитие.

Идея состоит в том, чтобы создать своего рода «сет-игру» (простая карточная игра).

И я пытаюсь реализовать методы .contains, чтобы найти, содержит ли массив конкретный случай, но я застрял - в строке 67 (если case Card.Symbol.oval = element), я получаю эту ошибку: Enum case 'oval' не является членом типа 'Card'

Что я делаю не так?

import Foundation

struct  Deck {

private (set) var cards = [Card] ()

    init() {
        for symbol in Card.Symbol.all {
                        cards.append(Card(symbol: symbol))
                    }
            }
    }

struct Card: Hashable {

    static func == (lhs: Card, rhs: Card) -> Bool {
        return lhs.identifier == rhs.identifier
    }

    func hash(into hasher: inout Hasher) {
            hasher.combine(identifier)

    }

    var symbol: Symbol

    enum Symbol: String {
        case squiggle = "■"
        case oval = "●"
        case diamond = "▲"

        static var all = [Symbol.squiggle, .oval, .diamond]

    }

    private var identifier: Int

    private static var identifierFactory = 0

    private static func getUniqueIdentifier() -> Int {
        identifierFactory += 1
        return identifierFactory

    }

    init(symbol: Symbol) {
        self.identifier = Card.getUniqueIdentifier()
        self.symbol = symbol
    }
}

struct SetGame {

    var deck = Deck ()

    lazy var cardsInDeck = deck.cards

    var cardsOpen = [Card] ()

    var cardsChosen = [Card] ()

    mutating func chooseCard(at index: Int) {
        if cardsChosen.count < 3 {
            cardsChosen.append(cardsOpen[index])
        }
        let itemFound = cardsChosen.contains { element in
            if case Card.Symbol.oval = element {
                return true
            } else {
                return false
            }
        }
    }
}

...