数组 – 不可变值只有变异成员
我已经使用var声明了一个数组,并将其填充在一个init()中。然而,当我尝试改变该数组时,我发现一堆错误告诉我的数组是不可变的。我在这里缺少什么?
struct Deck { var cards: Card[] = [] init () { for i in 1...4 { for ii in 1...13 { self.cards.append(Card(rank: Rank.fromRaw(ii)!,suit: Suit.fromRaw(i)!)) } } } func shuffle () { var shuffledDeck: Card[] = [] var count = self.cards.count for i in 1...52 { var limit = count - i var key = Int(arc4random_uniform(UInt32(limit))); shuffledDeck.append(self.cards[key]) self.cards.removeAtIndex(key) } self.cards = shuffledDeck } } 我得到的错误: Playground execution failed: error: <REPL>:75:22: error: immutable value of type 'Card[]' only has mutating members named 'removeAtIndex' self.cards.removeAtIndex(key) ^ ~~~~~~~~~~~~~ <REPL>:78:24: error: cannot assign to 'cards' in 'self' self.cards = shuffledDeck
一个struct被认为是一个值类型,所以默认情况下它是不可变的。如果要使用方法更改它,则必须声明方法变异。引用Swift书:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |