变量“offerCardsShuffled”推断为“()”类型,这可能是意外的
Posted
技术标签:
【中文标题】变量“offerCardsShuffled”推断为“()”类型,这可能是意外的【英文标题】:Variable 'offerCardsShuffled' inferred to have type '()', which may be unexpected 【发布时间】:2018-01-16 22:25:35 【问题描述】:与这个问题有关,但有不同的错误:Other Question
我已经尝试过这个问题的 Swift 3 和 Swift 4 代码:
Shuffle Link
我使用的是 Swift 3.2,当使用 Swift 3 代码时,它因为没有使用 SwapAt 而对我大喊大叫,所以我已经包含了 Swift 4 代码,但我都尝试了,结果相同。
使用 shuffle() 方法时,我得到错误Variable 'offerCardsShuffled' inferred to have type '()', which may be unexpected
,之后出现明显的错误,Value of tuple type '()' has no member 'enumerated'
我不确定是什么原因造成的,因为使用此代码的其他人似乎没有遇到这个问题。为什么我的洗牌后的数组显示为空元组?
请注意,我对 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
【问题讨论】:
【参考方案1】:您的shuffle
方法修改了原始集合,它不会返回新集合。
变化:
var offerCardsShuffled = offerCards.shuffle()
到:
offerCards.shuffle()
并将剩余代码中offerCardsShuffled
的使用替换为offerCards
。
【讨论】:
如何打印退回的收藏?以上是关于变量“offerCardsShuffled”推断为“()”类型,这可能是意外的的主要内容,如果未能解决你的问题,请参考以下文章
Kotlin函数 ⑤ ( 匿名函数变量类型推断 | 匿名函数参数类型自动推断 | 匿名函数又称为 Lambda 表达式 )
GroovyGroovy 动态语言特性 ( Groovy 中的变量自动类型推断以及动态调用 | Java 中必须为变量指定其类型 )