Ich möchte ein Deck von 10 Karten aus einem Set mit mehreren Farben erstellen. Es sind jedoch möglicherweise nur einige Farben verfügbar.
Ich habe daher eine Funktion validCards() -> [Card]
erstellt, die 10 gültige Karten aus dem Deck auswählen und sie als ein Array von Karten zurückgeben sollte. Es tut dies durch Wiederholung eine Karte zu holen, bis sie gültig ist:Swift3 Parameter außerhalb Wiederholungs-While-Schleife
func validCards() -> [Card] {
let availableSuits: [String] = ["Diamond"]
let deck: [Card] = Card.deck()
var validDeck: [Card] = []
for i in 0...10 {
repeat {
let (card, index) = deck.randomElement()
} while !availableSuits.contains(card.suit) "|ERROR: Use of unresolved identifier card"
validDeck.append(card) "|ERROR: Use of unresolved identifier card"
}
return validDeck
}
Der einzig mögliche Grund für die Fehler in Zeile 8 und 9 (soweit ich weiß) ist, dass die Variable innerhalb der repeat {}
lokal Schleife.
jedoch rasch mich nicht lassen, einfach public var
schreiben, einen Fehler wirft „Attribut Öffentlichkeit kann nur in einem nicht-lokalen Bereich angewandt werden.
Kann mir jemand helfen? Vielen Dank im Voraus, Narusan
. PS: ich habe eine Struktur, die Card
definiert, ist es völlig in Ordnung, und auch der Array-Erweiterung randomElement
arbeiten Arbeits
'lassen (Karte, Index)' 'innen repeat' Block ist, so dass es nicht verfügbar außerhalb dieses Blocks ist, müssen Sie Tupel deklarieren, bevor Wiederholungsblock wie' var (card, index): (Card, Int) ' –
Es sieht auch so aus, als wäre' suit' eine String-Eigenschaft, also musst du contains mit deinem 'availableSuits'-Array verwenden. –
Ja, das habe ich gerade auch bemerkt. Vielen Dank – Narusan