在尝试实现 Swift 编程指南第 35 页上的“实验”时,我在 Xcode 操场上遇到了一个非常奇怪的错误。在该方法中,在最内层循环pokerDeck
开头的行中,我得到了错误。如何/为什么是可选的?let card...
Value of optional type 'Rank?' not unwrapped
Rank
struct Card {
var rank : Rank
var suit : Suit
init(rank : Rank, suit : Suit) {
self.rank = rank
self.suit = suit
}
func pokerDeck() -> Card[] {
let suits = [Suit.Spades, Suit.Clubs, Suit.Hearts, Suit.Diamonds]
var deck = Card[]()
for suit in suits {
for r in 1 ... 13 {
let card = Card(rank: Rank.fromRaw(r), suit: suit) // ERROR
deck += card
}
}
return deck
}
}
Xcode 建议的修复方法是添加一个!
let card = Card(rank: Rank.fromRaw(r)!, suit: suit)
这使得问题更加模糊。