在我的代碼如下,winRankArray
的內容都是字符串對象。我遇到的問題是,在最後設置didWinRank
變量給了我以下錯誤:輸入'String?'不符合協議'Equatable'
Type 'String?' does not conform to protocol 'Equatable'
我試着刪除?
,使設置卡行列看起來像var cardRank1 = deckDictionary[cardKey1].first
,但是這給了我一個錯誤,說明
Value of optional type 'Array?' not unwrapped; did you mean to use '!' or '?'?
我該如何設置變量,以便產生的winRankArray
沒有這個問題?
var cardKey1 = "card\(firstRandomNumber)"
var cardRank1 = deckDictionary[cardKey1]?.first
var cardKey2 = "card\(firstRandomNumber)"
var cardRank2 = deckDictionary[cardKey2]?.first
var cardKey3 = "card\(firstRandomNumber)"
var cardRank3 = deckDictionary[cardKey3]?.first
var cardKey4 = "card\(firstRandomNumber)"
var cardRank4 = deckDictionary[cardKey4]?.first
var cardKey5 = "card\(firstRandomNumber)"
var cardRank5 = deckDictionary[cardKey5]?.first
var cardKey6 = "card\(firstRandomNumber)"
var cardRank6 = deckDictionary[cardKey6]?.first
var cardKey7 = "card\(firstRandomNumber)"
var cardRank7 = deckDictionary[cardKey7]?.first
var winRankArray = [cardRank1, cardRank2, cardRank3, cardRank4, cardRank5, cardRank6, cardRank7]
//func sameRank {loop through winRankArray, find 3 identical values, set winRankStatus to true}
let didWinRank = winRankArray.slidingWindowWithLength(4).contains{ $0.allEqual() }
什麼是'slidingWindowWithLength'回報? – t4nhpt
嘗試使用'deckDictionary [cardKey1] !. first'和相同的方法。 –
@DharmeshKheni說什麼,並添加適當的零檢查。此外,您正在調用的'first'屬性返回一個可選項。所以這也會返回一個'String?' –