【发布时间】:2015-10-29 04:18:07
【问题描述】:
在我下面的代码中,winRankArray 的内容都是字符串对象。我遇到的问题是在最后设置 didWinRank 变量会给我以下错误:
键入“字符串?”不符合协议'Equatable'
我已经尝试删除 ?,这样设置卡等级看起来像 var cardRank1 = deckDictionary[cardKey1].first,但这给了我一个错误提示
可选类型“数组?”的值未拆封;你的意思是用'!'还是“?”?
如何设置变量以使生成的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返回? -
试试
deckDictionary[cardKey1]!.first,对所有人都一样。 -
@DharmeshKheni 所说的内容,并添加适当的 nil 检查。此外,您正在调用的
first属性返回一个可选值。所以这也会返回一个String?