Arrays 变量';报价单被洗牌';推断为具有类型';()';,这可能出乎意料
与此问题相关,但有一个不同的错误: 我已经尝试了Swift 3和Swift 4代码,从这个问题: 我使用的是Swift 3.2,当使用Swift 3代码时,它会因为我没有使用SwapAt而对我大喊大叫,所以我加入了Swift 4代码,但我尝试了两者,结果相同 当使用shuffle()方法时,我得到的错误Arrays 变量';报价单被洗牌';推断为具有类型';()';,这可能出乎意料,arrays,swift,Arrays,Swift,与此问题相关,但有一个不同的错误: 我已经尝试了Swift 3和Swift 4代码,从这个问题: 我使用的是Swift 3.2,当使用Swift 3代码时,它会因为我没有使用SwapAt而对我大喊大叫,所以我加入了Swift 4代码,但我尝试了两者,结果相同 当使用shuffle()方法时,我得到的错误变量'offerCardsShuffled'推断为具有类型'()',这可能是意外的,并且随后出现的明显错误是,元组类型'()'的值没有成员'枚举' 我不确定是什么原因导致了这个问题,因为其他使用
变量'offerCardsShuffled'推断为具有类型'()',这可能是意外的
,并且随后出现的明显错误是,元组类型'()'的值没有成员'枚举'
我不确定是什么原因导致了这个问题,因为其他使用这个代码的人似乎没有这个问题。为什么我的无序数组会显示为空元组
注:我对Swift开发还比较陌生,所以彻底的解释肯定会有帮助
func displayOfferCards() -> Void {
//let offerCardsr = allOfferCards().reversed()
var offerCards = allOfferCards()
var offerCardsShuffled = offerCards.shuffle()
for (index, offerCard) in offerCardsShuffled.enumerated() {
let delay = Double(index) * 0.2
offerCard.display(delay: delay)
}
}
}
func allOfferCards() -> [OfferCard]{
guard dataSource != nil else {
return []
}
let numberOfCards = self.dataSource!.kolodaNumberOfCards(self)
var offerCards = [OfferCard]()
for i in 0..<numberOfCards {
let offerCard = viewForCard(at: i)
if let offerCard = offerCard {
offerCards.append(offerCard as! OfferCard)
}
}
return offerCards
}
extension MutableCollection {
/// Shuffles the contents of this collection.
mutating func shuffle() {
let c = count
guard c > 1 else { return }
for (firstUnshuffled, unshuffledCount) in zip(indices, stride(from: c, to: 1, by: -1)) {
let d: IndexDistance = numericCast(arc4random_uniform(numericCast(unshuffledCount)))
let i = index(firstUnshuffled, offsetBy: d)
swapAt(firstUnshuffled, i)
}
}
}
extension Sequence {
/// Returns an array with the contents of this sequence, shuffled.
func shuffled() -> [Element] {
var result = Array(self)
result.shuffle()
return result
}
}
func displayOfferCards()->Void{
//let offerCardsr=allOfferCards().reversed()
var offerCards=allOfferCards()
var offerCardsShuffled=offerCards.shuffle()
对于offerCardsShuffled.enumerated()中的(索引,offerCard){
let延迟=双(指数)*0.2
报价卡显示(延迟:延迟)
}
}
}
func alloffercard()->[OfferCard]{
保护数据源!=无其他{
返回[]
}
让numberOfCards=self.dataSource!.kolodaNumberOfCards(self)
变量OfferCard=[OfferCard]()
对于0..1中的i,否则{return}
对于zip中的(firstUnshuffled,unshuffledCount)(索引,步幅(从:c到:1,由:-1){
设d:IndexDistance=numericCast(arc4random_统一(numericCast(unsuffledcount)))
设i=索引(第一个未缓冲,抵消者:d)
斯瓦帕特(第一个未缓冲,i)
}
}
}
扩展序列{
///返回包含此序列内容的数组,无序排列。
func shuffled()->[元素]{
var结果=数组(自身)
result.shuffle()
返回结果
}
}
您的shuffle
方法修改原始集合,但不会返回新集合
更改:
var offerCardsShuffled = offerCards.shuffle()
致:
并将剩余代码中的
offercardshuffled
替换为offerCards
。如何打印返回的集合?
offerCards.shuffle()