本文介绍了不可变的值只有变异成员的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我已经声明使用 VAR
阵列和的init内填充它()
。然而,当我尝试变异数组我得到的错误堆告诉我的数组是不可变的。缺少什么我在这里?
结构甲板{
VAR卡:卡[] = [] 在里面 () {
因为我在1 ... 4 {
对于II在1 ... 13 {
self.cards.append(卡(排名:Rank.fromRaw(二)!,套装:Suit.fromRaw(I)))
}
}
} FUNC洗牌(){
VAR shuffledDeck:卡[] = []
变种数= self.cards.count 因为我在1 ... 52 {
VAR上限=计数 - 我
VAR键= INT(arc4random_uniform(UInt32的(限制)));
shuffledDeck.append(self.cards [关键])
self.cards.removeAtIndex(键)
} self.cards = shuffledDeck
}
}
我得到的错误:
游乐场执行失败:错误:
<&REPL GT;:75:22:错误:类型的不可变的值'卡[]'不仅有变异的成员名为removeAtIndex
self.cards.removeAtIndex(键)
^ ~~~~~~~~~~~~~
<&REPL GT; 78:24:错误:无法在'自我'分配给'卡'
self.cards = shuffledDeck
解决方案
A 结构
被认为是值类型,因此它在默认情况下是不可改变的。如果你想用一个方法去改变它,你必须声明的方法突变
。引用雨燕书:
这篇关于不可变的值只有变异成员的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!